2010-08-17 108 views
3

我得到了一個文本輸入,從而有人可以開始輸入,然後在列表下方根據您輸入的內容填充。JavaScript預測輸入/下拉

1)在使用這種檢查「包含」的那一刻IM:

if(listToRedo[i].value.indexOf(text) != -1){ 

但問題是,它似乎是大小寫敏感的,我怎樣才能改變呢?

2)onkeyevent,onkeypress,onkeydown是否接受刪除關鍵動作?此外,哪一個最適合用於此活動。

回答

2

1)......但問題是,它似乎是區分大小寫,如何我可以改變這個嗎?

有兩種選擇。首先是兩個字符串轉換爲小寫,如下所示:然而

var reg = new RegExp(text, "i"); 
if (listToRedo[i].value.search(reg) != -1) { 

該第二方法可引入的問題,:

if (listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1) { 

或使用正則表達式與不區分大小寫的改性劑(i) ,如果您的測試字符串包含正則表達式中具有特殊功能的字符,並且您需要事先轉義這些字符。第一種方法更適合於基本搜索。

2)onkeyevent,onkeypress,onkeydown是否接受刪除鍵操作?此外,哪一個最適合用於此活動。

的onkeydown的onkeyup將火Delete鍵。 onkeypress事件在至少Chrome和IE不會觸發刪除鍵,爲此,將火只以下鍵:

  • 字母:A - Z(大寫和小寫)
  • 數字:0 - 9
  • 符號:! @#$%^ & *()_ - + = < [] {},。 /?\ | 「`」〜
  • 系統:ESC,空格鍵,回車

這是最好用的組合onkeypress事件的onkeydown併爲您在輸入的值的變化,因爲這些事件的行爲不同的瀏覽器。

2
if(listToRedo[i].value.toLowerCase().indexOf(text.toLowerCase()) != -1){ 

如果我理解正確,上面應該適合您的情況。

2
  1. 使用兩個列表並將其中一個列表的所有元素轉換爲小寫。然後,在查找之前,您也可以將字段中的文本隱藏爲小寫。

  2. onkeydownonkeyup被調用爲每一個鍵都光標鍵,移位等

+0

* onkeypress *不會在所有瀏覽器中的每個鍵被調用。 – 2010-08-17 12:31:24

+1

@安迪:謝謝,修正。 – 2010-08-18 07:36:58