Имам настройка за дистанционен валидатор
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";
}
}
}
Ако байпасът е "да", ajax винаги връща вярно.
Работи се при размазване и изпращане, но ако нулирам стойностите на бутоните, след това подайте, не се потвърждава отново.
Например,
- Задайте toggleBypass на "да"
- Задайте поле на невалидна стойност
- Изпълняваме $ ("форма"). Тъй като байпасът е "да", той преминава.
- Задайте toggleBypass на "не"
- Изпълняваме $ ("форма"). Той минава, защото дистанционното не се повтори.
Някакви идеи как мога да го накарам да работи правилно?
Отговори:
2 за отговор № 1Ако погледнете линия 897 в jquery.validate.js, ще видите оптимизация:
if ( previous.old !== value ) {
Тази линия предотвратява ново потвърждаване, ако стойността на полето не се промени. И тъй като използвате validate().element()
, той проверява само тази област, а не цялата форма, така че не открива промяната в toggleBypass.
Или премахнете тази проверка от jquery.validate source или проверете целия формуляр, а не само това поле.