使用javascript更改内容后激活onchange

时间:2011-10-21 16:27:59

标签: javascript jquery

当输入的值被javascript更改时,为什么不激活输入的onChange函数?例如,为什么单击按钮警报时不会发生?

<html>
<body>
<input type="text" id="myInput" onchange="alert(1)" />
<button onclick = "document.getElementById('myInput').value = 'ads'">click</button>
</body>    
</html>

如何使onchange功能正常工作?

编辑: 我现在明白事件不会自动触发,我怎么称呼它(jquery)?

1 个答案:

答案 0 :(得分:4)

脚本值更改不会触发事件。您必须手动触发事件。

jQuery:$('#myInput').trigger('change');

将以下代码添加到onchange事件:

var input = document.getElementById("myInput");
if(input.fireEvent) input.fireEvent("onchange");
else {
    var ev = document.createEvent('HTMLEvents');
    ev.initEvent("change", true, false);
    input.dispatchEvent(ev);
}

因此,结合您的代码(您实际上应该将JS代码与HTML分开):

<button onclick="var input = document.getElementById('myInput');input.value = 'ads';if(input.fireEvent)input.fireEvent('onchange');else{var ev=document.createEvent('HTMLEvents');ev.initEvent('change',true,false);input.dispatchEvent(ev);}">click</button>