Как использовать jQuery для удаленной проверки поля, которое зависит от другого поля в форме?

У меня есть форма, в которую я использую удаленную проверку, чтобы проверить, существует ли адрес электронной почты уже в базе данных. Однако выгода - то, что на этой форме, пользователь может выбрать между несколькими различными "группами", и у каждой группы есть свой собственный отличный набор адресов электронной почты (таким образом, та же электронная почта может существовать однажды в каждой группе).

Выбор группы является выпадающим на форме, и адрес электронной почты является полем ввода с удаленной проверкой. У меня есть пара проблем. Во-первых, я установил свое удаленное правило как это:

remote: {
    url: 'remote_script.php',
    data: {  group_id:  $('select.group_id').val() }
}

Однако это, кажется, статически устанавливает group_id параметр на то, что первое значение в выборе. Значение, если я изменяю выбор, затем инициировало удаленную проверку снова, group_id параметр не изменяется

Во-первых, как я могу сделать этот параметр динамичным, в зависимости от значения выбора в форме?

Во-вторых, как я вручную инициировал удаленную проверку на поле адреса электронной почты? Когда выбор group_id изменяется, я хочу повторно инициировать удаленную проверку на поле адреса электронной почты (не изменяя значение поля). Я пытался использовать

$(selector).validate().element('.email_addr')

Но это, кажется, только инициировало стандартную проверку (требуемый, электронная почта), а не удаленный вызов.

23
задан Laurel 29 March 2016 в 03:50
поделиться

2 ответа

Нашел решение второй части моего вопроса:

 $(".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();
    }
  }
}
38
ответ дан 29 November 2019 в 01:45
поделиться

Из второго примера для удаленного управления похоже, что функции (оцениваемые во время проверки) могут использоваться для данных, поэтому

remote: {
    url: 'remote_script.php',
    data: {
        group_id: function () {
            return $('select.group_id').val();
        }
    }
}

должен работать.

Что касается вашего второго вопроса, пытались ли вы передать правила проверки в validate () ?

8
ответ дан 29 November 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: