這似乎在我的測試中工作。假設你的「ul」有一個唯一的ID。
我的香草js有點生鏽。我確信有更簡潔的方法來做到這一點。我爲「搜索術語」創建了一個var(用於測試目的),但正如您所說 - 您會從輸入中獲得值。
<ul id="searchList">
<li><img class="makeIcon" src=""><span>Marko Pollo</span><a href="#"><img src=""></a></li>
<li><img class="makeIcon" src=""><span>Dr. Paul</span><a href="#"><img src=""></a></li>
</ul>
var ul_parent = document.getElementById('searchList');
var span_elements = ul_parent.getElementsByTagName("span");
var a_elements = ul_parent.getElementsByTagName("a");
var search_term = "Paul";
for (var i = 0, len = span_elements.length; i < len; i++) {
var lName = span_elements[i].innerHTML.replace(/\w+\s(\w+)$/, function(_, $1){
return $1;
});
if(search_term == lName){
console.log('found match');
a_elements[i].focus();
// once a match is found, return false out or do something else.
}
} // if you reach this point, you can add an else{} and alert user no matches
我沒加,但你可能希望走這條路線,以保持它的情況下不可知:.toLowerCase(),所以,這樣的:
search_term.toLowerCase() == lName.toLowerCase()
也許你需要這個jQuery插件? http://jqueryui.com/autocomplete/ –