Javascript在firefox和IE中不起作用,但在chrome中有效

时间:2011-05-19 12:04:23

标签: javascript html firefox google-chrome

我正在开发一个包含许多文本字段的HTML页面,例如userid和username,我在单独的.js文件中添加了这样的javascript代码

function CommonKeyPressIsAlpha(evt){
    var charCode = (evt.which) ? evt.which : event.keyCode
    if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123)){
        document.getElementById("errordisp").innerHTML = "";
        return true;
    }else{
        document.getElementById("errordisp").innerHTML = "Please enter a valid name!";
        return false;
    }
}

每当用户输入用户名文本字段时,我调用此函数来验证该用户仅键入字符。我在用户名文本字段中调用此函数:

onkeypress="return CommonKeyPressIsAlpha(evt);"

它在chrome中运行良好但在Firefox和IE中没有,这是什么问题?

2 个答案:

答案 0 :(得分:3)

您需要将event传递到onkeypress属性中的处理程序:

onkeypress="return CommonKeyPressIsAlpha(event);"

这适用于所有主流浏览器,但依赖于在属性中使用event而不是evt。我已经在SO before上写了关于它的工作原理的详细信息。

答案 1 :(得分:2)

您的代码依赖于Chrome错误,其中为内联事件处理程序(在您的情况下为onkeypress)编译的匿名函数在Chrome中具有一个名为evt的参数。规范要求将该参数命名为event。见http://code.google.com/p/chromium/issues/detail?id=80912

解决方案是使用onkeypress="return CommonKeyPressIsAlpha(event);"