1

当 IE 中的这个 onchange 事件返回 false 时,IE 焦点停留在那个输入框上。在 Firefox 中,焦点总是移动到下一个字段。

HTML:

input name="seminar_donation" type="text" id="seminar_donation"
onchange="return CheckTotal(this);"

JavaScript:

function CheckTotal(inputbox) {  
    if (isNaN(parseInt(inputbox.value))) {  
         alert("Please enter only digits 0-9");  
         inputbox.focus();  
         return false;  
    }  
    return true;  
}  

在 IE 中,我什至不需要 inputbox.focus() ,不幸的是它在 Firefox 中似乎没有做任何事情来保持对错误输入框的关注。我怎样才能让 Firefox 留在那个输入框上?

4

3 回答 3

1
setTimeout('document.getElementById("seminar_donation").focus()',1);
于 2010-01-13T16:55:14.767 回答
1

此处似乎不再存在的回复暗示了“时间”问题,尽管主题略有不同。所以我用谷歌搜索了“超时”,发现 Mike Rankin 的 2005 年的博客让我可以通过将 focus() 更改为:

var t= setTimeout('document.getElementById("seminar_donation").focus()',1);

所以发生的事情是 Firefox 仍然继续到下一个字段,但 1 毫秒后,此代码将焦点设置回错误字段。它很笨拙,因为如果下一个字段有一个 oblur 事件,那么当超时强制焦点返回时,onblur 将被触发。但这显然是 Firefox 中长期存在的错误的解决方法。

于 2010-01-13T16:48:55.917 回答
-1

您是否尝试过在 onchange 属性中添加“return”?IE

<input name="seminar_donation" type="text" id="seminar_donation" onchange="return CheckTotal(this);">

我不完全确定这会起作用,但值得一试吗?

编辑:澄清一下,我不确定的原因是我通常会以不同的方式处理这个问题,并将事件处理程序绑定在 javascript 而不是 html 中。

于 2010-01-13T16:32:11.753 回答