function trim(str) {
str.replace(/^s*/, '').replace(/s*$/, '');
return str;
}
function checknull(str) {
if (str==null || str==""||isNaN(str)){
valid=false
alert("Field must be a number and can not be NULL");
return valid;
}
else
{
return true;
}
}
function checkform(){
valid = true;
var input1=document.form1.TASKID.value;
checknull(trim(input1));
var x=document.main_form.iid.value;
checknull(trim(x));
return valid;
}
上面的Javascript没有按预期工作。每当输入是非数字时,警报框就会出现,但它会继续执行ACTION命令。不知道为什么。下面是使用这个Javascript的HTML代码。
<form method="POST" name="form1" action="myaction.cgi" onSubmit="return checkform()">
它一次只检查一个元素,当我使用第二种形式时,验证正在正常进行,当我使用第一种形式(form1)时,验证正在进行,但是,表单继续执行其操作。为什么?我感到很困惑。请帮助
您有一个变量作用域问题。试试这个:
function checknull(str) {
if (str === null || str == ""|| isNaN(str)) {
alert("Field must be a number and can not be NULL");
return false;
}
else {
return true;
}
}
function checkform() {
var valid = true;
if (valid) {
var input1=document.form1.TASKID.value;
valid = checknull(trim(input1));
}
if (valid) {
var x=document.main_form.iid.value;
valid = checknull(trim(x));
}
return valid;
}
我知道这不是你问题的答案,但是当我有类似的问题时,我用不同的方式解决了它。
我所做的是onkeypress我调用了一个函数,它会删除所有不是一个数字从传递的字段。因此,每当用户在字段中输入除数字以外的任何字符时,该函数都会立即删除该字符。
在提交之后,我只需要检查字段是否为空白。