2011-11-24 24 views
16

我正在使用jQuery validation plugin,我想要使用自定義方法,在決定情況是否有效時,將兩個輸入到兩個不同文本框中的值考慮在內。jquery-validate - addMethod - 如何應用引用兩個文本框的自定義規則?

我知道add method我發現一個例子...

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" 
    } 
}); 

我該怎麼辦類似申請顯示,這樣的「合計」被選中爲「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

如果我想同時添加兩個這樣的方法呢? – partho