2012-07-10 84 views
1

我想在輸入[type = text]的更改中執行一個函數,在除IE之外的所有瀏覽器中都可以正常工作。在按下Enter按鈕時,IE中的事件更改無法正常工作

這是個例:

$('input.switch').change(function(){ 
    alert('ok now');  
}); 

文本輸入看上去像:
<input class="switch" type="text" value="50000" />

不要忘了,我有不同類別的很多投入!

您有解決方案嗎?

+0

在IE中會發生什麼?任何錯誤?你有沒有試過'if($(this).prop('checked'))'? – 2012-07-10 14:11:29

+0

在IE中,事件在輸入失去焦點時執行! :\ – kach 2012-07-10 14:24:00

+0

對於所有瀏覽器中的文本輸入,情況就是這樣......您的代碼似乎並未涉及文本輸入。 – 2012-07-10 15:26:06

回答

1

如果要激活一個事件按下時,輸入然後註冊此事件:

$('input.switch:first').keydown(function(e){ 
    if (e.keyCode==13) { //Enter keycode 
     //Do you stuff 
    } 
}); 

輸入,因爲文字輸入不失去焦點不激活的變化可能。

祝你好運!

更新: 最新版本的jQuery允許您使用以下代碼獲取焦點元素:$('*:focus')。我相信你應該添加腳本來支持IE。對於每一個的keydown,如果該鍵輸入,讓聚焦輸入,模糊並觸發變化:

$('body').keydown(function() { 
    if (e.keyCode==13) { //Enter keycode 
     $('input:focus').blur().change(); //The blur is to prevent change happen again 
    } 
}); 

我不知道,你可以迫使IE瀏覽器來觸發改變不同的方式按下回車時。

希望這次有所幫助。

+0

是的,我知道這一點,但我想使用更改事件,這個問題在IE中是正確的:'(。 – kach 2012-07-10 14:26:41

+0

@kach:請參閱更新 – Naor 2012-07-10 20:49:02

+0

只是一個快速評論,keydown函數需要有「e」在那裏:$('body')。keydown(function(e){ – mike 2015-05-13 19:16:10