2013-07-24 348 views
1

爲什麼瀏覽器不會觸發更改事件

<input type="text" id="pies" value="" /> 

$(document).ready(function() { 
    $('#pies').on('change', function() { alert('cham'); }); 
    $('#pies').focus(); 
    $('#pies').val('kooooo'); 
    $('#pies').blur(); 
}); 

爲什麼瀏覽器不火的變化的事件嗎?我怎樣才能讓瀏覽器觸發更改事件。我不想手動觸發「更改」,因爲如果我會觸發更改,在某些情況下觸發更改將會觸發兩次。這僅僅是一個例子。

+0

你必須手動調用它。 – gustavohenke

+0

當您手動更改它,或者當您迫使它像您發佈的代碼一樣更改時,它不會觸發嗎? – melancia

回答

1

呼叫使用的變化:

$('#pies').change(); 
+0

您是否閱讀過:「我不想觸發」手動更改「? – godlark

1

您必須手動

$('#pies').change(); 

As docs says

做到這一點的改變事件被髮送到一個元素時,其值的變化。此事件僅限於元素,框和元素。對於選擇框,複選框和單選按鈕,當用戶使用鼠標進行選擇時,會立即觸發事件,但對於其他元素類型,事件將被推遲直到元素失去焦點。

在自動完成的情況下儘量做到$("#pies").trigger("autocompleteselect");

+0

因爲我正在使用jquery自動完成,並且事件「更改」在某些情況下未觸發,但這些情況幾乎不能排除。如果我在自動完成中的「change:function()」中觸發更改,則在其他情況下更改將被觸發兩次。 – godlark

+0

檢查我更新的答案:) –

+0

謝謝,但我檢查'autocompleteselect'是在所有情況下觸發的。當用戶點擊一個輸入字段並選擇一個選項而不按鍵盤上的鍵時,不會觸發'更改'。 – godlark

0

.change()事件是工作在你的榜樣。

請記住!更改事件被激發當你離開輸入字段!

Working example

但是,如果你想趕上一個輸入每一個變化考慮使用.on("input")

$(document).ready(function() { 
    $('#pies').on('input', function() { alert('cham'); }); 
    $('#pies').focus(); 
    $('#pies').val('kooooo'); 
    $('#pies').blur(); 
}); 

on input

要觸發更改事件使用$('#pies').trigger('change');

trigger

+0

你讀過「我不想觸發」手動更改嗎? – godlark

+0

在你的例子中,你試圖做同樣的事情...手動更改 –

+0

這只是一個例子。對不起,但很難理解我正在使用外部庫。我正在使用jquery自動完成和事件「更改」在某些情況下不會觸發,但這些情況很難排除。如果我在自動完成中的「change:function()」中觸發更改,則在其他情況下更改將被觸發兩次。 – godlark

0

更好地利用keypress代替change

相關問題