У меня есть форма, в которую я использую удаленную проверку, чтобы проверить, существует ли адрес электронной почты уже в базе данных. Однако выгода - то, что на этой форме, пользователь может выбрать между несколькими различными "группами", и у каждой группы есть свой собственный отличный набор адресов электронной почты (таким образом, та же электронная почта может существовать однажды в каждой группе).
Выбор группы является выпадающим на форме, и адрес электронной почты является полем ввода с удаленной проверкой. У меня есть пара проблем. Во-первых, я установил свое удаленное правило как это:
remote: {
url: 'remote_script.php',
data: { group_id: $('select.group_id').val() }
}
Однако это, кажется, статически устанавливает group_id параметр на то, что первое значение в выборе. Значение, если я изменяю выбор, затем инициировало удаленную проверку снова, group_id параметр не изменяется
Во-первых, как я могу сделать этот параметр динамичным, в зависимости от значения выбора в форме?
Во-вторых, как я вручную инициировал удаленную проверку на поле адреса электронной почты? Когда выбор group_id изменяется, я хочу повторно инициировать удаленную проверку на поле адреса электронной почты (не изменяя значение поля). Я пытался использовать
$(selector).validate().element('.email_addr')
Но это, кажется, только инициировало стандартную проверку (требуемый, электронная почта), а не удаленный вызов.
Нашел решение второй части моего вопроса:
$(".email_addr").removeData("previousValue");
удалит кеш удаленного запроса, и разрешить запуск удаленного запроса снова, используя .element ().
Таким образом, мой код выглядит следующим образом:
$("select.group_id").change(function() {
$(".email_addr").removeData("previousValue"); //clear cache when changing group
$("#customer_form").data('validator').element('.email_addr'); //retrigger remote call
//my validator is stored in .data() on the form
});
Решение было найдено здесь: решение
Первую часть моего вопроса первоначально ответил @Jeffery To
Все, что нужно сделать, это изменить значение параметра функции, а не просто значение. Пример Джеффри скопирован ниже для будущих гуглеров:
remote: {
url: 'remote_script.php',
data: {
group_id: function () {
return $('select.group_id').val();
}
}
}
Из второго примера для удаленного управления похоже, что функции (оцениваемые во время проверки) могут использоваться для данных, поэтому
remote: {
url: 'remote_script.php',
data: {
group_id: function () {
return $('select.group_id').val();
}
}
}
должен работать.
Что касается вашего второго вопроса, пытались ли вы передать правила проверки в validate ()
?