Mam taki zdalny setup sprawdzania poprawności
remote: {
type: "POST",
url: "/some/url",
data: {
value: function() {
return $("#field").val();
},
bypass: function() {
if ($("input:radio[name=toggleBypass]:checked").val() == "yes"){
return "yes";
}
return "no";
}
}
}
Jeśli obejście jest "tak", ajax zawsze zwraca wartość true.
Działa w trybie nieostrości i po przesłaniu, ale jeśli zresetuję wartości przycisków radiowych, a następnie przekażę, nie będzie to ponownie weryfikować.
Na przykład,
- Ustaw "toggleBypass" na "yes"
- Ustaw pole na nieprawidłową wartość
- Uruchom $ ("formularz"). Validate (). Element ("# pole"). Ponieważ obwodnica jest "tak", mija.
- Ustaw "toggleBypass" na "nie"
- Uruchom $ ("formularz"). Validate (). Element ("# pole"). Przekazuje, ponieważ zdalny program się nie powtórzył.
Jakieś pomysły, w jaki sposób mogę sprawić, by działał prawidłowo?
Odpowiedzi:
2 dla odpowiedzi № 1Jeśli spojrzysz na linię 897 w jquery.validate.js, zobaczysz optymalizację:
if ( previous.old !== value ) {
Ta linia zapobiega nowej walidacji, jeśli wartość pola nie uległa zmianie. A ponieważ używasz validate().element()
, sprawdza tylko to pole, a nie całą formę, więc nie wykrywa zmiany w toggleBypass.
Usuń tę kontrolę ze źródła jquery.validate lub sprawdź cały formularz, a nie tylko to pole.