0

やや複雑な形式でjquery検証を使用しています。検証ルールは、フォームフィールドにクラスを割り当てることによってコードに追加されますが、追加のパラメーターを使用して機能させることができないようです。恐れているjQueryのドキュメントにはあまり幸運がありません。

以下は、私にとってうまくいくものとうまくいかないものの例です。この例は明らかにあまり役に立ちません。


動作中(以外でエラーが表示されますa

(擬似コード)

$fieldXclasses = "myrule";

生成されたHTML

<input id="x" name="x" value="fromdatabase" class="myrule error" type="text">

jsメソッド:

jQuery.validator.addMethod("myrule", function(value, element) { 
    return this.optional(element) || /^a$/.test(value);
}, "Please enter 'a'");  

'fromdatabase'は明らかにそうではないので、余分なクラスとして "error"aがあり、"myrule"関数に失敗します。aフィールドに入力するとclass="docnmr valid"、期待どおりに変更されます。これからの私の結論は、私の検証セットアップが単純なケースで機能しているということです。したがって、検証プラグインをロードする方法でエラーを探す必要はありません。


動作しない:

(擬似コード)

$fieldXclasses = "myrule:1";

生成されたHTML

<input id="x" name="x" value="fromdatabase" class="myrule:1 valid" type="text">

jsメソッド:

jQuery.validator.addMethod("myrule", function(value, element,param) { 
    return this.optional(element) || /^a$/.test(value);
}, "Please enter 'a'");  

現在、初期状態は最初から間違っています。要件を満たしていないため、有効ではなくエラーになるはずです。クラスは、パラメーターとして関数をmyrule:1呼び出すものとして解析されないと想定しています。しかし、これがパラメータを追加する方法だと私が思ったものですが、jquery-documentationで正しいメソッドを簡単に見つけることはできません。myrule1

誰かがパラメータを追加する方法について私に教えてもらえますか?

背景:最終的には、互いに依存しているため、別のフィールド値をパラメーターとして使用することが目標です。this別のオプションは、正しいフィールドを見つけるために、パラメーターとルール内のオブジェクトを忘れることです。しかし、それが実現可能かどうかはわかりません。

4

1 に答える 1

2

2つの選択肢があり、どちらもclass属性の使用を伴いません。入力のように属性と値を指定するだけで、必要なmyrule="1"処理が実行されます。

<input id="x" name="x" value="fromdatabase" myrule="1" type="text"> 

または、validate呼び出しで、次のようなルールを指定できます。

$('form').validate({
 ...
 rules: {
    ...
    x: {
       myrule: 1
    },
    ...
 }
});

それを行う最初の方法の簡単な例については、ここを参照してください:http: //jsfiddle.net/ryleyb/2E6k9/

于 2012-08-28T15:15:50.787 に答える