我是JavaScript新手,我試圖做一個搜索功能,以少量的數據。JavaScript功能太快
我的下一個HTML代碼:
<form name="f1">
<input type="text" name="sbox" onkeydown=keysearch(event)>
<button type="button" onclick=search()></button>
</form>
而接下來的JavaScript來實現去功能(它可以隱藏所有的塊,然後做可見他們中的一些,在比較他們的文字(上)和文本搜索框):
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:在此之前,我會爲此搜索框執行「即時搜索」,所以如果您有一些想法...再次感謝您。
不知道你的問題,但你可以通過跟蹤功能的console.log調用你的代碼的進展。它確實有助於快速調試。 – 2013-02-19 08:14:07
所以你想讓'自動完成'功能在keydown延遲一段時間後工作? – cwdoh 2013-02-19 08:21:52
再次加載您的頁面之類的聲音。至少IE會在'input:text'上按'ENTER'時提交一個'form'。爲了防止出現這種情況,您需要防止默認操作,該操作在(舊)IE中由'event.cancelBubble = true; event.returnValue = false;'。 – Teemu 2013-02-19 08:27:03