隐藏输入变更事件

时间:2012-09-25 10:09:39

标签: jquery input hidden

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

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

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

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

2 个答案:

答案 0 :(得分:70)

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

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

答案 1 :(得分:26)

正如在重复中所说,并且如您所见,在javascript中完成的更改不会触发change事件。

因为我没有在重复项中找到可接受的答案(答案不涉及隐藏值设置方式的变化),而假设你真的需要(就是你可以当你改变隐藏的输入值时不要调用你的函数),这是你可能会做的:

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年,对于人们不知道,不,网络世界的最新进展都没有解决这个问题。变异观察者不会观察输入的值属性(它实际上不是DOM),ES6对象观察者也无法对这些本机对象进行观察。