2016-02-08 4 views
1

Я перестраиваю большую форму, содержащую как поля ввода, так и выпадающие меню для отправки через AJAX после того, как поле было дефокусировано и только если значение было изменилось. У меня есть селектор jQuery, который прослушивает любые изменения в форме, как показано ниже.jQuery при изменении значения полей формы, но игнорирование отображаемых переключений

$('.settings :input').change(function(field){ 

у меня все работает нормально, и это выстреливает запрос AJAX, когда это необходимо, однако часть формы переключает секцию видимости формы.

В приведенном выше фрагменте обнаружено отображение/скрытие подполей, которые меняются в качестве изменений, и запускает отдельные вызовы AJAX для каждого поля.

Есть ли альтернатива изменению, которую я могу использовать для запуска только в том случае, если событие имеет значение ввода или метод для определения того, является ли событие изменением значения?

ответ

0

Видимость полей формы была переключена на родительском уровне, по существу, отображала/скрывала оболочку для каждой «строки». Запись каждого события на консоль отображала два события по-разному. Начальное событие для изменения выпадающего списка, которое запускает переключатель, отправляет законное событие изменения.

Отображаемые/скрытые поля вместо этого отправили инициированное событие. Мне удалось отфильтровать законные запросы, добавив оператор if, чтобы игнорировать инициированные события.

$('.settings :input').change(function(field){ 
    if(field.isTrigger != true){ 
     .. process AJAX 
Смежные вопросы