Come disabilitare il metodo di convalida personalizzato a condizione
-
03-07-2019 - |
Domanda
Uso jQuery Plug-in di convalida per assicurarmi quale utente ha inserito cost_of_car nel primo campo di testo e payment_amount positivo nel secondo campo di testo, ad esempio * cost_of_car * 0.4 < = payment_amount < = cost_of_car *:
$.validator.addMethod("testMaxAmount", function()
{
return $("#cost_of_car").val() - 0 >= $("#payment_amount").val() - 0;
}, "Can't be more than cost_of_car");
$.validator.addMethod("testMinAmount", function()
{
return $("#cost_of_car").val() * 0.4 <= $("#payment_amount").val() - 0;
}, "Can't be less than cost_of_car * 0.4");
$("#calc_form").validate(
{
rules:
{
cost_of_car:
{
required: true,
number: true,
min: 1,
max: 10000000
},
payment_amount:
{
required: true,
number: true,
testMaxAmount: true,
testMinAmount: true
}
}
});
Ora voglio saltare i controlli testMaxAmount e testMinAmount fino a quando cost_of_car è valido. Test
$("#calc_form").validate().element("#cost_of_car")
o persino
$("#calc_form").validate({ignore: "#payment_amount"}).element("#cost_of_car")
all'interno di questi metodi porta alla ricorsione e blocca il browser.
Proporrebbe qualche altro metodo per disabilitare la convalida di payment_amount fino a quando cost_of_car è valido, per favore?
Soluzione
AGGIORNAMENTO: la modifica deve essere nelle validator.addMethod()
chiamate:
$.validator.addMethod("testMaxAmount", function()
{
if($("#cost_of_car").valid())
return $("#cost_of_car").val() - 0 >= $("#payment_amount").val() - 0;
else
return true;
}, "Can't be more than cost_of_car");
$.validator.addMethod("testMinAmount", function()
{
if($("#cost_of_car").valid())
return $("#cost_of_car").val() * 0.4 <= $("#payment_amount").val() - 0;
else
return true;
}, "Can't be less than cost_of_car * 0.4");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow