2012-09-17 47 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

是的,我很抱歉,我將編輯必要的。謝謝。 –