2014-01-12 27 views
1

我不想使用JQuery。 Here是一個簡單的一段JavaScript代碼的作品,可以讓你搜索下拉菜單列表:改變一個可用的腳本

<HTML><HEAD><SCRIPT type="text/javascript"> 
function searchSel() { 
    var input=document.getElementById('realtxt').value.toLowerCase(); 
    var output=document.getElementById('realitems').options; 
    for(var i=0;i<output.length;i++) { 
    if(output[i].value.indexOf(input)==0){ 
     output[i].selected=true; 
    } 
    if(document.getElementById('realtxt').value==''){ 
     output[0].selected=true; 
    } 
    } 
} 
</SCRIPT></HEAD><BODY> 
<FORM> 
Search <input type="text" id="realtxt" onkeyup="searchSel()"> 
<SELECT id="realitems"> 
<OPTION value="">Select... 
<OPTION value="afghanistan">Afghanistan 
<OPTION value="albania">Albania 
<OPTION value="algeria">Algeria 
<OPTION value="andorra">Andorra 
<OPTION value="angola">Angola 
</SELECT> 
</FORM></BODY></HTML> 

的問題是,爲了讓它工作,每個選項的值必須有文字。我嘗試將JavaScript代碼中的「值」字段更改爲「名稱」,以便它僅搜索名稱,但不能執行。我的選項字段有數字,我不能輕易將它們轉換爲名稱。有沒有辦法來調整這個JavaScript來處理名稱或更好的搜索選項標籤?

+0

你是什麼意思的「名稱」? '

+0

對不起,我試圖學習JavaScript,但從來沒有完全理解它,所以我可能會使用錯誤的術語。那麼你是否說如果我將價值改變爲文字,它會起作用? – user3187352

+0

我將這兩行添加爲新選項

回答

0

您需要更改行兩件事

if(output[i].value.indexOf(input)==0){ 
  • 爲y,而不是使用.value.text財產我們的<option> elements
  • 使其小寫以匹配小寫輸入。用小寫value屬性和數字你沒有這個問題。

這個腳本會是這個結果:

function searchSel() { 
    var input = document.getElementById('realtxt').value.toLowerCase(), 
     len = input.length, 
     output = document.getElementById('realitems').options; 
    for(var i=0; i<output.length; i++) 
    if (output[i].text.toLowerCase().slice(0, len) == input) 
     output[i].selected = true; 
    if (input == '') 
    output[0].selected = true; 
} 

我也已經使用了improved startswith check

+0

謝謝:)作品:) – user3187352

0

使用這個代碼,我已經取代 「值」 與 「的innerHTML」

function searchSel() { 
       var input = document.getElementById('realtxt').value.toLowerCase(); 
       var output = document.getElementById('realitems').options; 
       for (var i = 0; i < output.length; i++) { 
        if (output[i].innerHTML.indexOf(input) == 0) { 
         output[i].selected = true; 
        } 
        if (document.getElementById('realtxt').value == '') { 
         output[0].selected = true; 
        } 
       } 
      } 
+0

我用你的新代碼,它沒有工作。當我輸入文本沒有被選中的下拉菜單 – user3187352

+0

它與我工作正常..你嘗試按ctrl + f5完成刷新後更改代碼? – Namila

+0

是的,並關閉瀏覽器並清除Cookies – user3187352

0

這條線:

var input=document.getElementById('realtxt').value.toLowerCase(); 

使輸入的字符串。

<OPTION value=1>text 

value是一個整數。字符串永遠不會==整數。 變化

if(output[i].value.indexOf(input)==0) to 

if((output[i].value.indexOf(input)==0) || (output[i].value.indexOf(parseInt(input))) 
+0

感謝您的回覆,但你們是誰測試你提供的代碼,因爲它不起作用。 – user3187352

相關問題