2010-01-19 91 views
1

我試圖獲取它,以便當某個值放入文本框時,焦點將保留在文本框中(並且將在生產中顯示警報)。我試圖讓它在Firefox 3.5.7中運行,但沒有運氣。把焦點放在onchange事件中的文本框

我該如何做到這一點,當一個文本框是在onchange特定值,它將保持專注/重新集中在文本框?

活生生的例子是在http://jsbin.com/ipina

<body> 
Enter your name: <input type="text" name="fname" id="fname" onchange=" 
    if(this.value=='foo'){ 
    this.select(); 
    this.focus(); 
    } 
    " /> 
</body> 

另外,我不明白在執行此代碼的錯誤控制檯任何JavaScript錯誤或警告。

+1

您是否試圖強調焦點留在該文本框?如果用戶正在改變它,它不會專注嗎? – brian 2010-01-19 22:57:06

+0

不,不會調用onchange事件(在firefox和IE中爲文本框),直到控件失去焦點 – Earlz 2010-01-19 23:00:30

回答

1

根據Javascript onchange different in IE and FireFox我需要onchange事件發生後設置的重點,所以我有這樣的事情結束了:

Enter your name: <input type="text" name="fname" id="fname" onblur=" 
    if(this.value=='foo'){ 
    alert('bah'); 
    setTimeout('document.getElementById(\'fname\').focus();document.getElementById(\'fname\').select();',0); 
    } 
    " /> 

而且我也有當焦點抓住它丟失了,不一定在文本改變時,所以我不得不使用onblur而不是onchange。

Live:http://jsbin.com/ofeva

2

onchange事件被觸發時,用戶關注文本框。

也許你可能想要使用blur事件重新集中在文本框,如果值是'foo'。

如果您需要即時結果,您應該使用onkeyup

<body> 
Enter your name: <input type="text" name="fname" id="fname" onkeyup=" 
    if(this.value=='foo'){ 
    this.select(); 
    this.focus(); 
    } 
    " /> 
</body> 
+0

我需要輸入整個值才能評估文本框是否應保持聚焦。 – Earlz 2010-01-19 23:03:46

相關問題