我正在开发一个包含许多文本字段的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中没有,这是什么问题?
答案 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);"