如何检测隐藏输入值的变化?我已经尝试过这些方法没有成功:
$('#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中所做的更改不会触发更改事件。
因为我没有在重复的对象中找到可接受的答案(这就是解决方案不涉及隐藏值的设置方式的改变),并且假设你真的需要这个(当你改变隐藏的值时你不能调用你的函数输入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对象观察者也对这些本机对象无能为力。