2017-03-17 5 views
-1

「fooは〜の間にあるべきです:0〜25」のようなエラーメッセージが必要な場合は、addMethodと書くべきですか?jQuery ValidatorのaddMethodのメッセージ引数にある "JavaScript object"にアクセスする方法は?

jQuery.validator.addMethod("myRule", function (value, element, params) { 
    var inputNumber = $(element).val(); 

    if ((inputNumber >= params.min) && (inputNumber <= params.max)) { 
      returnValue = true; 
     } else { 
      returnValue = false; 
     } 
}, "{0} should be between: {1} and {2}!"); 

$("#input").rules("add", { myRule: { data: "foo", min: 0, max: 25 } }); 

複数の値を持つJavaScriptオブジェクトを取得していて、そこからいくつかの値にアクセスしたいとします。上の例は説明するための例です(範囲ルールは上記のロジックに使用できますが、他のビジネスロジックを持つ他のカスタムルールがあります)。 同じものを説明する既存の質問がいくつかありますが、通常の配列です。しかし、私はJavaScriptのオブジェクトのために、この例に示すようにしたい。

+0

何が必要ない 'range'バリに建てすでにあります:https://jqueryvalidation.org/range-method/ –

+0

コードは、私がここで説明したよりもはるかに複雑です。そこで、私は、メッセージ引数の最小値と最大値にアクセスする方法を知りたがっています。私は配列を持っていません。 – Lucifer

答えて

-1

私のために以下の変更が行われました。私は直接文字列メッセージの代わりに最後のパラメータとして関数を使用しました。

jQuery.validator.addMethod("myRule", function (value, element, params) { 
    var inputNumber = $(element).val(); 
    if ((inputNumber >= params.min) && (inputNumber <= params.max)) { 
     returnValue = true; 
    } else { 
     returnValue = false; 
    } 
    },function(params, element) { 
     return params.data + " should be between " + params.min + "and " + params.max + "."; 
    }); 
+0

'returnValue'では何をやっていますか?このメソッドの中から実際に 'true'か' false'を返さなければなりません。 '$(element).val()'は 'value'と全く同じですので、これを抽出するために' .val() 'を使うのは無意味です。非常にお粗末な練習はここにある。 – Sparky

+0

@ Sparkyあなたは私の質問を正しく読みましたか?私はそこに明確に言及していますが、コードのほんの一例です。私の質問はaddMethod()の3番目のパラメータで、2番目のパラメータで行ったことではありませんでした。とにかくあなたの提案に感謝します。しかし、何かをコメントする前に、正しく読むことの習慣を取ってください。 – Lucifer

関連する問題