繁体   English   中英

IE和FireFox中的Javascript onchange不同

[英]Javascript onchange different in IE and FireFox

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

尽管主题稍有不同,但此处似乎不再存在的答复暗示了“计时”问题。 因此,我用Google搜索“超时”并找到了Mike Rankin的博客(来自2005年),该博客使我可以通过将focus()更改为:

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

因此,发生的情况是Firefox仍继续到下一个字段,但是1毫秒后,此代码将焦点重新设置到错误字段。 这是一种欺骗,因为如果下一个字段发生模糊事件,则当超时迫使焦点返回时,onblur将被触发。 但这是针对Firefox中长期存在的错误的解决方法。

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

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

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

我不确定这是否可行,但是值得一试吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM