2012-06-10 192 views
1

我剛剛意識到這段代碼在Firefox中運行良好,但不在IE 8中運行。當用戶在輸入字段中輸入至少8個字符時,我需要自動填充列表。keyup在IE 8中不工作

$('#inputField').keyup(function (event) { 
    var $inputField = $(this); 
     if ($inputField.val().length >= 8) { popularListBox(); } 
}); 

function populateListBox(){ 
    $.get("Default.aspx?name=test", function(data) { 
     $('#listBox').children().remove(); 
     var options = data; 
     $("#listBox").html(data); 
    }); 
} 
+0

我認爲問題出在你的'popularList()'中。你的代碼對我來說似乎並不正確。 –

+3

你爲什麼使用setTimeout? – undefined

+0

您可以在這裏查看所有瀏覽器的功能可用性http://www.quirksmode.org/dom/events/keys.html – Trevor

回答

5

你想檢測輸入字段的變化,然後做一些操作,對吧?

我想你可能只檢測到鍵盤動作的變化。例如,如果用戶從剪貼板粘貼,怎麼樣?

請嘗試以下代碼:

$('#inputField').bind('propertychange input paste', function() { 
    // do poppularListBox() 
}); 

它適用於包括textarea的大多數輸入字段。請檢查jQuery站點以獲取更多信息。

以我的經驗,.keyup()和.keypress()經常在IE中出錯。如果可能的話,我想使用.keydown()(case by case)

+0

謝謝!在FF,Chrome和IE 8中測試。 – user385599