当隐藏输入的值动态变化时,jQuery添加Class

时间:2011-06-11 11:05:55

标签: javascript jquery javascript-events addclass

我有一个联系表单,在成功完成sendmail函数后向隐藏输入发送值。我想检测此值更改,然后使用它将类应用于div / paragraph。

我最近问了一个类似的问题,我知道这需要脚本在加载DOM后不断检查文档,但即使在添加.change()之后,它似乎也不想添加类。< / p>

这是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 个答案:

答案 0 :(得分:2)

代码更新<input>元素的值时,不会触发“更改”事件,因此您注册的处理程序将无法运行。然而,你可以做的就是从看门狗那里“改变”:

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

如何设置“originalValue”取决于您的应用程序。例如,您可以保留单独的“.data()”值,并在您保存的值与当前“value”属性不同时监视。或者您可以将值保存在闭包变量中:

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