Javascript,窗口.事件,表单验证

Javascript, window.event, form validation

本文关键字:验证 表单 窗口 Javascript 事件      更新时间:2023-09-26

这是我们教授的一个例子,我的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;
}
谁能解释一下这是怎么回事?我对窗口不太熟悉。事件,事件。wondow.event。键码等。我不太明白其中的逻辑。蒂娅!
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;

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

至于让你感到困惑的部分,这是非常旧的代码,是为旧版本的Netscape和IE设计的。在现代浏览器中,您可以只使用event。keyCode,但是Netscape使用event。而IE则要求你使用window.event。现代浏览器也隐藏状态栏,使窗口。