/ / jquery validation: uruchom zdalne sprawdzanie poprawności działające bez zmiany wartości danego pola - javascript, jquery, jquery-validate

sprawdzanie poprawności jQuery: uruchom zdalną walidację ponownie bez zmiany wartości danego pola - javascript, jquery, jquery-validate

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,

  1. Ustaw "toggleBypass" na "yes"
  2. Ustaw pole na nieprawidłową wartość
  3. Uruchom $ ("formularz"). Validate (). Element ("# pole"). Ponieważ obwodnica jest "tak", mija.
  4. Ustaw "toggleBypass" na "nie"
  5. 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 № 1

Jeś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.