2011-11-24 28 views
16

私はjQuery validation pluginを使用しています。状況が妥当であるかどうかを判断する際に、2つの異なるテキストボックスに入力された2つの値を考慮するカスタムメソッドを使用します。jquery-validate - addMethod - 2つのテキストボックスを参照するカスタムルールの適用方法?

は、私は約add method知っていると私は例を見つけた... 2つの要素を参照する

jQuery.validator.addMethod("math", function(value, element, params) { 
return this.optional(element) || value == params[0] + params[1]; 
}, jQuery.format("Please enter the correct value for {0} + {1}")); 

を...しかし、私はこの方法を使用することになるだろう、ルールを作成する方法は明らかではありませんよこれは?それが簡単に私は、この例の方法を利用したいと私はこのようになりますフォームを持っていることを想像議論するようにするに

..

<form id="TOTALSFORM" name="TOTALSFORM"> 
    <label for="LHSOPERAND">Input 1</label> 
    <br /> 
    <input type="text" name="LHSOPERAND" id="LHSOPERAND" class="required" /> 
    <br /> 
    <label for="RHSOPERAND">End</label> 
    <br /> 
    <input type="text" name="RHSOPERAND" id="RHSOPERAND" class="required" /> 
    <label for="TOTAL">End</label> 
    <br /> 
    <input type="text" name="TOTAL" id="TOTAL" class="required" /> 
</form> 

私は適用され、他のルールを持っています。

$("#OPTREASON").rules("add", { 
    required: true, 
    min: 0, 
    messages: { 
     required: "Required input", 
     min: "Please select a Reason" 
    } 
}); 

がどのように私は「TOTAL」「がLHSOPERAND」と「RHSOPERAND」の合計であると確認されるように示された例のカスタムメソッドを適用するには似たような操作を行うことができます。このような

答えて

34

次のことを試してみてください。

ルールの作成

jQuery.validator.addMethod("checkTotal",function(value) { 
    total = parseFloat($('#LHSOPERAND').val()) + parseFloat($('#RHSOPERAND').val()); 
    return total == parseFloat($('#TOTAL').val()); 
}, "Amounts do not add up!"); 

jQuery.validator.classRuleSettings.checkTotal = { checkTotal: true }; 

入力

<input type="text" name="TOTAL" id="TOTAL" class="required checkTotal" /> 

初期検証

$(document).ready(function() { 
    $("#TOTALSFORM").validate(); 
}); 

ここにフィドル:http://jsfiddle.net/wTMv3/

+1

ちょうど私が欲しかった。どうもありがとう。 – shearichard

+1

このような完全な答えをありがとう。 'jQuery.validator.classRuleSettings.className = {methodName:true};' – Fernando

+0

私はこのような2つのメソッドを同時に追加したいのですが? – partho

関連する問題