jQuery addClass, когда значение скрытого ввода изменяется динамически - PullRequest
1 голос
/ 11 июня 2011

У меня есть контактная форма, которая отправляет значение на скрытый ввод при успешном завершении функции sendmail. Я хочу обнаружить это изменение значения и затем использовать его для применения класса к div / абзацу.

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

Вот jQuery:

$(document).ready(function() {
   $("#acf_success_sent").change(function(){
    if ($("#acf_success_sent").val() == "1"){
     $("#acf_verified").addClass('gone');
     }
   });

 });

любая помощь будет отличной. вот ссылка на тестовую версию формы, если вам интересно, все работает, кроме проверенного символа, не исчезает после успешной отправки http://seeshell.me/forms/contact.php

1 Ответ

2 голосов
/ 11 июня 2011

Событие «change» не сработает, когда code обновит значение вашего элемента <input>, поэтому зарегистрированный обработчик не будет работать.Однако то, что вы могли бы сделать, - это «изменить» огонь из сторожевого таймера:

var watchdog = setInterval(function() {
  if ($('#acf_success_sent').val() !== originalValue)
    $('#acf_success_sent').trigger('change');
}, 100);

Способ настройки «оригинала» зависит от вашего приложения.Например, вы можете сохранить отдельное значение «.data ()» и наблюдать, когда сохраненное вами значение отличается от текущего атрибута «value».Или вы можете сохранить значение в закрывающей переменной:

var watchdog = (function() {
  var $acfSuccessSent = $('#acf_success_sent'), cachedValue = $acfSuccessSent.val();
  return function() {
    if (cachedValue !== $acfSuccessSent.val())
      $acfSuccessSent.trigger('change');
  };
})();
...