2011-11-24 8 views
16

Używam jQuery validation plugin i chcę użyć niestandardowej metody, która bierze pod uwagę dwie wartości wprowadzone do dwóch różnych pól tekstowych przy podejmowaniu decyzji, czy sytuacja jest prawidłowa.jquery-validate - addMethod - jak zastosować niestandardową regułę odwołującą się do dwóch pól tekstowych?

wiem o add method i znalazłem przykład ...

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

... który odwołuje się z dwóch elementów, ale nie jestem jasne jak napisać regułę, która będzie korzystać z metody tak jak to ?

Aby łatwiej dyskutować wyobrazić, że chcę skorzystać z tej metody i przykład Mam formularz, który wygląda tak ..

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

mam inne zasady, że mogę ubiegać tak:

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

jak mogę zrobić coś podobnego do zastosowania metody przykładem niestandardowego pokazany tak, że „RAZEM” jest zaznaczone jako suma „LHSOPERAND” i „RHSOPERAND”.

Odpowiedz

34

Spróbuj wykonać następujące czynności:

Tworzenie reguły

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

Wejście

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

Init Validation

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

Fiddle tutaj: http://jsfiddle.net/wTMv3/

+1

Tylko to, co chciałem. Dziękuję bardzo. – shearichard

+1

Dzięki za tak kompletną odpowiedź. Aby ukończyć nieco więcej: 'jQuery.validator.classRuleSettings.className = {methodName: true};' – Fernando

+0

co jeśli chcę dodać dwie takie metody jednocześnie? – partho

Powiązane problemy