2013-10-08 70 views
-1

我是新來的Javascript和我打算寫從包含的子串當前輸入到輸入文本字段中的字符串數組寫入文件中的所有字符串函數的所有單詞。查找包含給定的子

<!doctype html> 
<html lang="en"> 
<head> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
</head> 
<body> 
<input type="text" > 
    <p></p> 
<script> 

    var names = ["armadillo", "blue", "com", "demo", "engine"]; 

    $("input").keypress(function() { 
    var incomplete = $(this).val(); 

    searchStrings(); 

    }; 

    function(searchStrings()) 
    { 
     for(name in names) 
     { 
      if(name.indexOf(incomplete) != -1) 
      { 
       document.write(name); 
      } else 
      { 
       document.write("no match found"); 
      } 
     } 
    }; 
}); 
</script> 
</body> 
</html> 
+0

你的問題是什麼? – Mathletics

+0

'function(searchStrings())'可能是你的問題。你有太多的括號。你也應該把價值傳遞給你的功能。 – Mathletics

+0

你是否試圖從頭開發[jQuery autocomplete](http://jqueryui.com/autocomplete/)?爲什麼? – h2ooooooo

回答

0

http://jsfiddle.net/DrekX/

由於你正在使用jQuery來充分利用它。

var names = ["armadillo", "blue", "com", "demo", "engine"]; 

// references to jQuery belong in a wrapper 

jQuery(document).ready(function($){ 

    $("input").keyup(function() {   
     searchStrings(this.value); 
    }); 

    function searchStrings(search_value) 
    { 
     if(!search_value.length){ 
      $('#names-found').html(''); 
      return; 
     } 

     var names_found = $.map(names, function(value, index){    
      return ~value.indexOf(search_value) ? value : null; 
     }); 

     $('#names-found').html(
      names_found.length == 0 ? 'No names found.' : 
      '<b>Names found:</b> ' + names_found.join(', ') 
     )   
    } 
}); 
+0

你能告訴我如何將這些匹配的單詞追加到列表中嗎?我想弄清楚如何製作一個自動完成功能,主要是出於好奇。你的回答很棒。非常感謝! –

+0

投票真棒的答案。我有一種感覺,就是你在哪裏。看看http://jqueryui.com/autocomplete/這很不錯。 – iambriansreed

0

我認爲你需要改變你的函數是這樣的(除去多餘的paranthesis)

function searchStrings(incomplete) 
    { 
     for(name in names) 
     { 
      if(name.indexOf(incomplete) != -1) 
      { 
       document.write(name); 
      } else 
      { 
       document.write("no match found"); 
      } 
     } 
    }; 

,並調用它像

searchStrings(incomplete); 
+0

謝謝你的幫助!即使在更改之後,按鍵上的文檔也沒有寫入任何內容。 –

1

你需要重寫你的searchStrings()功能,所以它需要參數:

function searchStrings(incomplete) 
{ 
    for(name in names) 
    { 
     if(name.indexOf(incomplete) != -1) 
     { 
      document.write(name); 
     } else 
     { 
      document.write("no match found"); 
     } 
    } 
}; 

而你需要調用它是這樣的:

searchStrings(incomplete); 

修復你的語法錯誤,你的代碼應該是這樣的:

var names = ["armadillo", "blue", "com", "demo", "engine"]; 

function searchStrings(incomplete) { 
    for (name in names) { 
     if (name.indexOf(incomplete) != -1) { 
      alert(name); 
     } else { 
      alert("no match found"); 
     } 
    } 
}; 

$("input").keyup(function() { 
    var incomplete = $(this).val(); 
    searchStrings(incomplete); 
}); 

JSFiddle