2011-07-29 58 views
0

我有一個用於顯示Google建議的腳本。該腳本還允許使用箭頭鍵在建議的列表中找到。當你這樣做時,「文本」在輸入字段中填充。這個代碼是:我如何讓jquery代碼在IE中工作

$("#inp").live("keyup", function(e) { 
    var search_terms = $("li.current").text(); 
    if(e.keyCode==40) 
    { 
    $("#inp").val(search_terms); 
    } 
     if(e.keyCode==38) 
    { 
    $("#inp").val(search_terms); 
    } 
}); 

完整的腳本是在這裏:jsbin

的問題是,IE8不支持「oninput」所以首先請在IE測試這和替換「oninput」與「onpropertychange」,這是一個IE瀏覽器唯一事件(似乎)做完這些之後,你會發現,腳本不響應正確的時候,在建議列表中下來。但是,如果你刪除上述代碼比所有的作品都很好。但我真的需要上面的代碼在IE中運行,那麼爲了使它正常工作,我應該改變什麼?

+0

的「onpropertychange」事件對象好好嘗試一下包括'keyCode'屬性,因爲它不是一個鍵盤事件 - 它無關,與用戶輸入的所有,事實上。所以'e.keyCode'是未定義的或爲null,並且永遠不會等於箭頭鍵碼。我會說你不應該使用'oninput'或'onpropertychange',因爲1st不是跨瀏覽器(就像你找到的那樣),第二個與鍵盤事件無關。改用keyup事件(無論如何你已經使用過)。雖然我不是一個jQuery的人,所以我不能給你確切的代碼,但它太難以模仿輸入行爲 – Flambino

+0

感謝您的反饋,我不知道onpropertychange與無關keybord。 – Youss

+1

沒有問題。 'onpropertychange'的目的是偵聽對象的屬性(變量)何時更改。換句話說,完全是爲了「在javascript內部」發生的變化 - 這些變化可能是由用戶造成的,但基本上任何改變對象屬性的東西都會觸發它。當你開始在一個字段中輸入內容時,一些字段的屬性可能會改變,所以它看起來和'oninput'一樣,但實際上這是一個「副作用」,可以這麼說。也就是說,在某些情況下它可以做到這一點,但在這裏我會親自去尋找一個跨瀏覽器的解決方案。 – Flambino

回答

0

更新了jQuery最新版本:P

+0

你是認真的..? – Youss