2011-11-02 255 views
0

我有jQuery使用選擇框中的更改事件來更新窗體上的輸入框。當我更新它的值時,我需要輸入框來觸發它的更改事件。模擬onChange事件在HTML輸入框上觸發

此鏈接MSDN顯示了一種模擬點擊事件的方法。有沒有一種技術可以用來模擬變化事件?

回答

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> 

它結合事件處理程序定製的「改變」事件,然後觸發事件。

1

您可以觸發器change事件處理程序。你可以簡單地調用它像:

jQuery('#my_field').change(); 

這是一個捷徑:

jQuery('#my_field').trigger('change'); 

查看更多關於documentation of .change()(第三,屬性變化較小)。

0

已經有幾個很好的基於jQuery的答案(雖然你沒有使用jQuery標籤),但如果你要綁定change事件來調用一個函數,還有另一種方法可以爲你工作。

說你已經通過觸發「變」勢必改變事件的doSomethingOnInputChange功能在弗拉德的答案...

而不是模擬的事件,你可以直接調用doSomethingOnInputChange - 這是不是在做, :

$('#textinput').trigger('change') 

你的JavaScript只是讓同一個函數的調用,當你觸發事件被稱爲反正:

doSomethingOnInputChange(...); 

您可能希望或不希望將#textinput DOM元素作爲參數傳遞給直接調用或事件參數(但提供您自己的事件參數使這種方法不值得) - 這些取決於您需要做什麼功能。