【发布时间】:2014-12-17 02:08:19
【问题描述】:
我在寻找什么:
我正在努力为用户创建一种简单的方法来搜索人员列表,并让结果立即显示在搜索字段下方。结果必须显示“接近”的结果,而不是精确的。例如:用户搜索“Mr. Smith”,显示如下现有结果:“John Smith”(由于没有“Mr. Smith”条目,所以显示了一个带有关键字“smith”的条目)
我有什么:
我有一个工作代码,允许用户输入一些字符,并显示包含与输入匹配的字符串的所有 div(参见 jsfiddle:http://jsfiddle.net/891nvajb/5/ 代码也在下面) 不幸的是,这只会显示完全匹配的结果。
<body>
<input type="text" id="edit_search" onkeyup="javascript: find_my_div();">
<input type="button" onClick="javascript: find_my_div();" value="Find">
<script>
function gid(a_id) {
return document.getElementById (a_id) ;
}
function close_all(){
for (i=0;i<999; i++) {
var o = gid("user_"+i);
if (o) {
o.style.display = "none";
}
}
}
function find_my_div(){
close_all();
var o_edit = gid("edit_search");
var str_needle = edit_search.value;
str_needle = str_needle.toUpperCase();
if (str_needle != "") {
for (i=0;i<999; i++) {
var o = gid("user_"+i);
if (o) {
var str_haystack = o.innerHTML.toUpperCase();
if (str_haystack.indexOf(str_needle) ==-1) {
// not found, do nothing
}
else{
o.style.display = "block";
}
}
}
}
}
</script>
<div id="user_0" style="display:none">Andy Daulton<br/>Owner Nissan<br/><br/></div>
<div id="user_1" style="display:none">Doug Guy<br/>Bug Collector<br/><br/></div>
<div id="user_2" style="display:none">Sam Hilton<br/>Famous Celebrity in Hollywood<br/><br/></div>
<div id="user_3" style="display:none">Don Grey<br/>Old man<br/><br/></div>
<div id="user_4" style="display:none">Amy Hinterly<br/>Cook<br/><br/></div>
<div id="user_5" style="display:none">Gary Doll<br/>Racecar Driver<br/><br/></div>
<div id="user_6" style="display:none">Tod Akers<br/>Football Player<br/><br/></div>
<div id="user_7" style="display:none">Greg Barkley<br/>Interior designer<br/><br/></div>
<div id="user_8" style="display:none">Alen Simmons<br/>8th place winner<br/><br/></div>
【问题讨论】:
-
我无法在您声称有效的 JSFIDDLE 中重现“完全匹配”行为......您能否举例说明您在搜索时搜索的内容... ..
-
嵌入代码似乎可以工作; "ton" 返回 Daulton 和 Hilton...?
-
您只想优先考虑几个匹配的单词而不是更少?或者,Smoth 先生也应该归还 John Smith?
-
@Phani 示例:“dy da”将显示“Andy Daulton”,因为该字符串包含在该结果中。然而,如果您输入“andy smith”,则不会出现任何内容,即使结果中有“andy”。所以它不是单独查看关键字(这就是我想要的),而只是输入的确切字符串。
-
@juvian 如果“smooth”是 John Smith 结果中的关键字,那么他会出现,否则不会出现。
标签: javascript html search user-input displayobject