隐藏输入变更事件

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

$('#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); }); 

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

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

 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对象观察者也无法对这些本机对象进行无能为力。

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

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