JQuery input validator each() kilépés
2011-08-16T10:08:28+02:00
2011-08-16T14:05:51+02:00
2022-07-19T09:06:07+02:00
rakita.a
Helló!

Adott a következő validator kód:

$("input:text[name^=asp_]").each(function(){ var licit = $("input:hidden[name=licit_"+$(this).attr('name').substr(4)+"]").val(); var oldval = $("input:hidden[name=oldval_"+$(this).attr('name').substr(4)+"]").val(); if(parseFloat(oldval) != parseFloat($(this).val().replace(" ", "").replace(",", "."))){ voltvalt = 1; } if(licit.substr(0,1) == '+' && (parseFloat(oldval) > parseFloat($(this).val().replace(" ", "").replace(",", ".")) || parseFloat($(this).val().replace(" ", "").replace(",", ".")) < (parseFloat(oldval.replace(" ", "")) + parseFloat(licit.replace(" ", ""))).toFixed(8))){ $(this).css('background', '#FF0000'); errorMessage("A bírálati szempontra adott ajánlat esetén az új ajánlatnak legalább a licitlépcső értékével kedvezőbbnek kell lennie!"); $(this).keyup(function(){ $(this).css('background', '#F2F2F2'); }); volthib = 1; }else if(licit.substr(0,1) == '-' && (parseFloat(oldval) < parseFloat($(this).val().replace(" ", "").replace(",", ".")) || parseFloat($(this).val().replace(" ", "").replace(",", ".")) > (parseFloat(oldval.replace(" ", "")) + parseFloat(licit.replace(" ", ""))).toFixed(8))){ $(this).css('background', '#FF0000'); errorMessage("A bírálati szempontra adott ajánlat esetén az új ajánlatnak legalább a licitlépcső értékével kedvezőbbnek kell lennie!"); $(this).keyup(function(){ $(this).css('background', '#F2F2F2'); }); volthib = 1; } });

Megvizsgálja, hogy az összes asp_ prefix-el kezdődő input megfelel-e az adott követelményeknek. Úgy szeretném módosítani, hogy ha legalább egy input megfelelt, akkor lépjen ki az each()-ből. Tudnátok segíteni?

A függvénynek megfeleltség esetén voltvalt=1 és volthib=0 értékekkel kellene visszatérnie.

Előre is köszönöm!
Mutasd a teljes hozzászólást!
Gondolom a voltvalt és volthib változók az each szempontjából nézve globálisak.
Az each ciklusból kilépni akkor tudsz, ha a callback függvény visszatérési értéke false (egyébként megy tovább a loop).

Szóval beraksz a végére a }); elé egy:
if (voltvalt == 1 && volthib != 1) return false;
sort, és ez az első megfelelő adatnál megszakítja az each futását.
Mutasd a teljes hozzászólást!

  • Hasonlókat próbáltam. A kód nem az enyém, kiderült, hogy plusz még egy rejtett hiba is volt benne, hiszen a replace függvényt nem hívta meg a /g kapcsolóval, innentől kezdve tök véletlenszerűen adott vissza egyszer jó, egyszer rossz értéket a függvény. Most kijavítottam, és a tiedhez hasonló return false-al működik is rendesen.
    Mutasd a teljes hozzászólást!
abcd