在IE和FireFox中,Javascript onchange不同

时间:2010-01-13 16:15:19

标签: javascript html onchange

当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留在输入框中?

3 个答案:

答案 0 :(得分:1)

虽然主题略有不同,但此处似乎不再出现“时间”问题的回复。所以我用谷歌搜索'超时'并发现2005年Mike Rankin的博客让我通过改变焦点()来解决问题:

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

所以会发生什么是Firefox仍然继续下一个字段,但1毫秒后,此代码将焦点设置回错误的字段。这很麻烦,因为如果下一个字段有一个oblur事件,当超时强制焦点重新启动时会触发onb​​lur。但这显然是Firefox中一个长期存在的错误。

答案 1 :(得分:1)

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

答案 2 :(得分:-1)

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

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

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

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