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); }); |
在为隐藏的输入分配新值之后,也可以使用
1 | $('#hidden_input').val('new_value').trigger('change'); |
正如重复说明的那样,正如您所看到的,在javascript中所做的更改不会触发
因为我没有在重复项中找到可接受的答案(即答案不涉及更改隐藏值的设置方式),并假设您确实需要(即您在更改隐藏值时无法调用函数)输入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对象观察者对于那些本机对象也无能为力。