我有jQuery使用選擇框中的更改事件來更新窗體上的輸入框。當我更新它的值時,我需要輸入框來觸發它的更改事件。模擬onChange事件在HTML輸入框上觸發
此鏈接MSDN顯示了一種模擬點擊事件的方法。有沒有一種技術可以用來模擬變化事件?
我有jQuery使用選擇框中的更改事件來更新窗體上的輸入框。當我更新它的值時,我需要輸入框來觸發它的更改事件。模擬onChange事件在HTML輸入框上觸發
此鏈接MSDN顯示了一種模擬點擊事件的方法。有沒有一種技術可以用來模擬變化事件?
您可以使用trigger()
:
$('#input-id').trigger('change');
這理論上應該做到這一點:
<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>
它結合事件處理程序定製的「改變」事件,然後觸發事件。
您可以觸發器change
事件處理程序。你可以簡單地調用它像:
jQuery('#my_field').change();
這是一個捷徑:
jQuery('#my_field').trigger('change');
查看更多關於documentation of .change()
(第三,屬性變化較小)。
已經有幾個很好的基於jQuery的答案(雖然你沒有使用jQuery標籤),但如果你要綁定change事件來調用一個函數,還有另一種方法可以爲你工作。
說你已經通過觸發「變」勢必改變事件的doSomethingOnInputChange
功能在弗拉德的答案...
而不是模擬的事件,你可以直接調用doSomethingOnInputChange
- 這是不是在做, :
$('#textinput').trigger('change')
你的JavaScript只是讓同一個函數的調用,當你觸發事件被稱爲反正:
doSomethingOnInputChange(...);
您可能希望或不希望將#textinput
DOM元素作爲參數傳遞給直接調用或事件參數(但提供您自己的事件參數使這種方法不值得) - 這些取決於您需要做什麼功能。