2011-11-24 34 views
16

Tôi đang sử dụng jQuery validation plugin và tôi muốn sử dụng phương thức tùy chỉnh nhận hai giá trị được nhập vào hai hộp văn bản khác nhau khi quyết định xem tình huống có hợp lệ hay không.jquery-validate - addMethod - cách áp dụng quy tắc tùy chỉnh tham chiếu hai hộp văn bản?

tôi biết về add method và tôi đã tìm thấy một ví dụ ...

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

... mà tham chiếu hai yếu tố nhưng tôi không rõ làm thế nào để viết một quy tắc mà sẽ làm cho việc sử dụng một phương pháp như thế này?

Để làm cho nó dễ dàng hơn để thảo luận về tưởng tượng rằng tôi muốn tận dụng phương pháp ví dụ này và tôi đã có một hình thức trông như thế này ..

<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> 

Tôi đã có quy định khác mà tôi áp dụng như thế này:

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

làm thế nào tôi có thể làm điều gì đó tương tự để áp dụng các phương pháp dụ tùy chỉnh hiện để 'tỔNG' được chọn như là tổng của 'LHSOPERAND' và 'RHSOPERAND'.

Trả lời

34

Hãy thử như sau:

Tạo Rule

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

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

Init Validation

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

Fiddle đây: http://jsfiddle.net/wTMv3/

+1

Chỉ cần những gì tôi muốn. Cảm ơn rất nhiều. – shearichard

+1

Cảm ơn bạn đã trả lời đầy đủ. Chỉ cần hoàn thành thêm một chút: 'jQuery.validator.classRuleSettings.className = {methodName: true};' – Fernando

+0

nếu tôi muốn thêm hai phương thức như vậy cùng một lúc thì sao? – partho

Các vấn đề liên quan