2012-09-17 46 views
0

有一个文本框与一个onkeyup事件监听器(一个JavaScript函数,比如提醒某事)相关联。举一个例子 -javascript中的事件处理问题

<input type='text' name='text1' onkeyup='exec(this.value);'/> 
<script> 
exec = function(textdata) { alert(textdata); } 
</script> 

在这种情况下,每次用户在键盘上点击某物时都会发出警报消息。

有没有什么办法可以处理,事件处理程序只会在几秒钟不活动之后才进行。也就是说,在这种情况下,仅当用户输入长文本并且正在考虑他是否想要添加更多内容时才会出现警报消息。例如,他键入他的名字并等待2秒钟,然后出现警告消息,并且当他在他的名字的每个字母中键入时警告消息不出现。

回答

1

如果您希望在每次按下某个键时运行某个功能,则需要使用onkeyup而不是onchange。尝试此功能你想

<input type='text' name='text1' onkeyup='exec(this.value);'/> 
<script> 

var timer; //This needs to be a global variable 

exec = function(textData){ 

    clearTimeout(timer); 

    timer = setTimeout(function(){ alert(textData) }, 2000); 
} 
</script> 

每当用户按下一个键(输入一个字符的文本框)函数被调用和计时器清零。如果定时器在2秒后再次按任意键,定时器将被设置为在2秒钟后提醒文本框的值。 Here是一个工作jsFiddle。

0

在您的代码中,文本仅在您每次离开文本框时发出警报。这是onchange的行为。在物品被触发之前,你需要对物品失去焦点。

onkeyupalert()每次用户在文本框中按下某物时。

+0

是的,我很抱歉,我将编辑必要的。谢谢。 –