JavaScript函数太快
我是JavaScript新手,我试图对少量数据执行搜索功能 我有下一个HTML代码:JavaScript函数太快,javascript,javascript-events,Javascript,Javascript Events,我是JavaScript新手,我试图对少量数据执行搜索功能 我有下一个HTML代码: <form name="f1"> <input type="text" name="sbox" onkeydown=keysearch(event)> <button type="button" onclick=search()></button> </form> 我有一些找不到的问题。事实上,第二个函数也可以工作,但是它太快了,所以
<form name="f1">
<input type="text" name="sbox" onkeydown=keysearch(event)>
<button type="button" onclick=search()></button>
</form>
我有一些找不到的问题。事实上,第二个函数也可以工作,但是它太快了,所以我可以在不到一秒钟的时间内看到它的结果,然后所有的东西都回到它们的位置
请。。。有什么想法吗
多谢各位
在此之前,我会对这个搜索框进行“即时搜索”,所以如果你有一些想法。。。再次感谢您。我尝试了您的代码,它似乎有效,但有一个例外。当在输入字段中按enter键并注册键代码13时,您还将调用表单的默认操作。也就是用http请求发布表单。因此,您的页面将重新加载,使javascript变得无用。它会弹出一秒钟。然后在重新加载时消失
var keycheckTimeout;
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 ) {
clearTimeout( keycheckTimeout );
keycheckTimeout = setTimeout( function() { search(); }, 1000 );
}
}
尝试在提交表单时返回false,如下所示
<form name="f1" onsubmit="return false;">
这是一个非常简单的方法来防止它,它仍然可以在禁用javascript的情况下工作,因为实际操作将运行
如果您感兴趣的话,也可以使用jQuery实现这一点
未设置动作的表单格式不正确。在某些浏览器中,如果您忽略了这一点,则按Enter键刷新页面。你的情况就是这样 改变
<form name="f1">
到
另请参见此不确定您的问题,但您可以通过console.log函数调用跟踪代码进度。它确实有助于快速调试。因此,您是否希望使“自动完成”功能在按键延迟一段时间后工作?听起来您的页面再次加载。在
input:text
上点击ENTER
时,IE至少会提交一份表格。要防止这种情况,您需要防止默认操作,在(旧版)IE中,默认操作由event.cancelBubble=true完成;event.returnValue=false代码>。与您的问题无关,但请注意不要在for循环中使用全局变量,如i。例如,如果在另一个For循环中使用相同的i调用另一个函数,那么您将遇到一个难以调试的坏问题。您的解决方案也可以工作,并且也可以使用另一个答案上的解决方案来完成,即add onKeyPress=“if(event.which==13)return false;”)谢谢;)
var keycheckTimeout;
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 ) {
clearTimeout( keycheckTimeout );
keycheckTimeout = setTimeout( function() { search(); }, 1000 );
}
}
<form name="f1" onsubmit="return false;">
<form name="f1">
<form name="f1" action="javascript:void(0);">