我是 JavaScript 新手,我正在尝试对少量数据执行搜索功能。
我有下一个 HTML 代码:
<form name="f1">
<input type="text" name="sbox" onkeydown=keysearch(event)>
<button type="button" onclick=search()></button>
</form>
以及下一个实现 de 功能的 JavaScript(它隐藏所有块,然后显示其中的一些,比较它们的文本(on )和搜索框上的文本):
function search() {
word = f1.sbox.value.toLowerCase()
v = document.getElementsByClassName('item')
for( i=0; i<v.length; ++i ) {
v[i].style.display = 'none'
s1 = i.toString()
if( document.getElementById(s1).innerHTML.toLowerCase().indexOf(word) != -1 ) {
s2 = s1 + "b";
document.getElementById(s2).style.display = 'block'
}
}
}
要应用于这样的元素:
<div id="items">
<article id="0b" class="item">
<h3><a id="0" href="http://www.example.com/">Example</a></h3>
<img src="example.jpg">
</article>
(...)
</div><!-- end items -->
所以,一切正常。问题是当我尝试添加另一个功能以允许用户使用 de Enter 键时,不仅使用单击鼠标来使用搜索框。这是我的代码:
function keysearch(e) {
var charCode
if( e && e.which ) {
charCode = e.which
} else if( window.event ) {
e = window.event
charCode = e.keyCode
}
if( charCode == 13 ) {
search() // call the function above
}
}
我有一些我找不到的问题。其实第二个功能也可以,只是速度太快了,不到一秒我就可以看到结果,然后一切都恢复原状了。
请... 关于它的一些想法?
非常感谢。
PS:在此之前,我会对这个搜索框进行“即时搜索”,所以如果你有什么想法……再次感谢你。