我在验证方面遇到问题。它适用于谷歌浏览器,但不适用于Mozilla。
赞:我有一个名称为 _ __ _ 的表单。
我想进行验证,以便用户无法写入数值。
在javascript中:
function checkerFunction1(e)
{
var charCode1=e.which || e.keyCode;
if((charCode1 >= 65 && charCode1 <= 90) ||(charCode1 >= 97 && charCode1 <= 122) ||(charCode1==32 || charCode1==8 || charCode1==46))
return true;
return false;
}
在jsp页面内:
<input type="text" value="Name" onkeypress="return checkerFunction1(window.event)"/>
为什么它不能在Mozilla中运行?
答案 0 :(得分:1)
您忘记致电e.preventDefault()
。
function checkerFunction1(e) {
e = e || window.event;
var charCode1=e.which || e.keyCode;
if(
(charCode1 >= 65 && charCode1 <= 90)
|| (charCode1 >= 97 && charCode1 <= 122)
|| (charCode1==32 || charCode1==8 || charCode1==46)
) return true;
return e.preventDefault(), false;
}
请参阅this fiddle。
最好在窗口加载时将事件侦听器附加到DOM元素,而不是通过html属性,因为它将HTML与JavaScript分开。它还具有选择何时捕获事件本身的额外好处
如果兼容性绝对需要,您仍然可以在函数内部获取window.event
。
Firefox中的“undefined
问题”来自event
被视为关键字而不是变量,因此window.event === undefined
只有event !== undefined
,因此如果您想保留作为属性的东西,你可以像这样做
onkeypress="return checkerFunction1(window.event||event)"
答案 1 :(得分:1)
这应该解决它:
function checkerFunction1(e)
{
e = e || window.event;
var charCode1=e.which || e.keyCode;
return ((charCode1 >= 65 && charCode1 <= 90) ||(charCode1 >= 97 && charCode1 <= 122) ||(charCode1==32 || charCode1==8 || charCode1==46))
}
if
括号中的条件已经是布尔值。如果您想要返回true
或false
,则不需要if,您基本上是这样说的:
if(true)
return true;
else
return false;
Firefox告诉我“e未定义”
您需要为该浏览器使用event
对象(如上所示)
preventDefault()
不需要。返回false
将阻止Firefox在该字段中输入错误密钥。