2010-01-19 86 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

相关问题