我有jQuery使用选择框中的change事件来更新表单上的输入框。当我更新它的值时,我需要输入框来触发它的更改事件。
MSDN上的此链接显示了一种模拟点击事件的方法。我可以用一种技术来模拟变化事件吗?
答案 0 :(得分:3)
您可以使用trigger()
:
$('#input-id').trigger('change');
答案 1 :(得分:1)
您可以触发change
事件处理程序。你可以简单地这样称呼它:
jQuery('#my_field').change();
这是一个快捷方式:
jQuery('#my_field').trigger('change');
有关documentation of .change()
的更多信息(第三个无属性变体)。
答案 2 :(得分:0)
理论上应该这样做:
<input id="textinput" value="somevalue" name="somename" />
<script type="text/javascript">
function doSomethingOnInputChange(e) {
console.log('input on change');
}
$('#textinput').bind('change', doSomethingOnInputChange);
$('#textinput').trigger('change');
</script>
它将事件处理程序绑定到自定义的“更改”事件,然后触发事件。
答案 3 :(得分:0)
已经有几个很好的基于jQuery的答案(虽然你没有使用jQuery标签)但是如果你绑定change事件来调用一个函数,还有另一种方法可以为你工作。
假设您已经将更改事件绑定到doSomethingOnInputChange
函数,就像Vlad的回答一样...
不是通过触发“更改”来模拟事件,而是直接调用doSomethingOnInputChange
- 也就是说,而不是:
$('#textinput').trigger('change')
当您触发事件时,您的javascript只会调用同样被调用的函数:
doSomethingOnInputChange( ... );
您可能希望也可能不希望将#textinput
DOM元素作为参数传递给直接调用或事件参数(但提供您自己的事件参数使得这种方法几乎不值得) - 那些取决于什么你需要做这个功能。