关于jquery:隐藏的输入更改事件

hidden input change event

如何检测隐藏输入值的变化? 我已经尝试过这些方法而没有成功:

1
2
3
4
$('#id_inpout').live('change',function () {
        var id_el = $(this).attr('id');
        alert(id_el);
    });

1
2
3
4
$('#id_inpout').change(function () {
        var id_el = $(this).attr('id');
        alert(id_el);
    });

1
2
3
4
$('#id_inpout').bind('change',function () {
        var id_el = $(this).attr('id');
        alert(id_el);
    });


在为隐藏的输入分配新值之后,也可以使用trigger('change')

1
$('#hidden_input').val('new_value').trigger('change');


正如重复说明的那样,正如您所看到的,在javascript中所做的更改不会触发change事件。

因为我没有在重复项中找到可接受的答案(即答案不涉及更改隐藏值的设置方式),并假设您确实需要(即您在更改隐藏值时无法调用函数)输入val),这是您可能会做的事情:

1
2
3
4
5
6
7
8
9
10
11
function survey(selector, callback) {
   var input = $(selector);
   var oldvalue = input.val();
   setInterval(function(){
      if (input.val()!=oldvalue){
          oldvalue = input.val();
          callback();
      }
   }, 100);
}
survey('#id_inpout', function(){console.log('changed')});

但是我最好使用更直接的解决方案(即,当您更改隐藏的输入值时调用一个函数)。该函数可能是您自己的简单事件调度程序(基本上是一个对象,其中包装了要调用的函数列表)。

编辑:现在是2015年,对于人们来说,不知道,网络世界的最新进展都无法解决该问题。突变观察者不会观察到输入的value属性(它不是真正的DOM),ES6对象观察者对于那些本机对象也无能为力。