1

このhttp://jsbin.com/osolo/を見ていただけますか?

数値ではなく Min Age に文字を入力して送信すると、カスタム検証メソッドで正規表現を使用して jquery バリデーターを使用してこれが検証されますが、これは機能しますが、もう少し動的にすることを検討しています。

カスタム検証方法では、行

var data = $(element).metadata(); 

検証中の要素からメタデータを取得します。私がやりたいのは、

data.validateOptions.regex

テストする正規表現として(これが問題であることはわかりません)、問題があるとわかるのは、呼び出し時に提供されるメッセージを使用するのではなく、フィールドが検証されない場合です

jQuery.validator.addMethod(name, method, message)

使いたいです

data.validateOptions.message

カスタムメソッド内からのエラーメッセージとして、誰かが私を正しい方向に向けることができますか?

ありがとう

ワンショット

4

2 に答える 2

1

JSでは文字列が不変であるため、アレックスの答えはうまくいかないと思います。

近いけど。Alex のコードから始めて、データ オブジェクト (または単なるメッセージ文字列) とメッセージを返す関数を含むクロージャを作成すると、その関数を addmethod 呼び出しの 3 番目の引数として渡すことができます。そのようです:

(function() {
    var data = {};
    var messager = function() {
        return data.validateOptions.message;
    };
    jQuery.validator.addMethod("perorgproperty", function(value, element) { 
        debugger; 
        //alert('testing perorgproperty'); 
        data = $(element).metadata();
        return this.optional(element) || /^\d+$/i.test(value); 
    }, messager);
})();
于 2010-08-31T03:44:43.867 に答える
0

クロージャーを作成するのはどうですか?

var data = {};
jQuery.validator.addMethod("perorgproperty", function(value, element) { 
    debugger; 
    //alert('testing perorgproperty'); 
    data = $(element).metadata(); 

    return this.optional(element) || /^\d+$/i.test(value); 
}, data.validateOptions.message); 

関数がメッセージの前に評価される限り、message参照によって渡されるだけではありませんか?

于 2009-10-28T13:39:36.167 に答える