模拟onChange事件以在HTML输入框上触发

时间:2011-11-02 20:21:06

标签: javascript html internet-explorer

我有jQuery使用选择框中的change事件来更新表单上的输入框。当我更新它的值时,我需要输入框来触发它的更改事件。

MSDN上的此链接显示了一种模拟点击事件的方法。我可以用一种技术来模拟变化事件吗?

4 个答案:

答案 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元素作为参数传递给直接调用或事件参数(但提供您自己的事件参数使得这种方法几乎不值得) - 那些取决于什么你需要做这个功能。