Javascript,window.event,表单验证

时间:2011-10-24 00:12:47

标签: javascript html

这是我们教授的一个例子,我的HTML生锈了,所以我不确定到底发生了什么 对于表单输入:

<input type="text" name="widgets" id="widgets" size="2" value="0" onchange="calc();" onkeypress="return isNumberInput(this, event);" />

对于Javascript:

function isNumberInput(field, event)
{
var key, keyChar;
if (window.event)
key = window.event.keyCode;
else if (event)
key = event.which;
else
return true;
// Check for special characters like backspace
if (key == null || key == 0 || key == 8 || key == 13 || key == 27)
return true;
// Check to see if it.s a number
keyChar = String.fromCharCode(key);
if (/\d/.test(keyChar))
{
window.status = "";
return true;
}
else
{
window.status = "Field accepts numbers only.";
return false;
}

有人可以解释发生了什么吗?我对window.event,event.which,wondow.event.keyCode等不太熟悉。我真的不懂逻辑。 TIA!

2 个答案:

答案 0 :(得分:0)

var key, keyChar; // declare variable to be used
if (window.event) // window.event Microsoft uses window.event. Does it exist? If so continue
    key = window.event.keyCode; // Microsoft uses window.event.keyCode to get the key the was pressed
else if (event) // other modern browsers will create an event object for you to use
    key = event.which; // event.which is the key that was pressed
else // else we can't get to the key maybe this is a full text browser? Anyways, no good exit function
    return true;

答案 1 :(得分:0)

基本上,此代码可防止用户输入除文本字段中的数字之外的任何内容。该函数返回true以允许用户输入击键,并返回false以防止它。此外,还允许使用特殊字符。

对于令你困惑的部分,这是非常古老的代码,专为旧版本的Netscape和IE而设计。使用现代浏览器,您可以使用event.keyCode,但Netscape过去常常使用event.which,IE曾经要求您使用window.event。现代浏览器也会隐藏状态栏,使window.status行无效。