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命令。不知道为什么.Below是使用这个Javascript的HTML代码。
<form method="POST" name="form1" action="myaction.cgi" onSubmit="return checkform()">
它一次只检查一个元素,当我使用第二个表单时,验证正常,当我使用firstform(form1)验证正在发生时,表单继续执行其操作。为什么?我很困惑。请帮忙
答案 0 :(得分:0)
您有一个变量范围问题。试试这个:
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;
}
答案 1 :(得分:0)
我知道这不是你问题的答案,但当我遇到类似的问题时,我以不同的方式解决了这个问题
我做的是onkeypress我调用了一个函数,它将删除传递字段中不是数字的所有内容。因此,每当用户在字段中输入除数字之外的任何内容时,该功能将立即删除该字符
在提交之后,我只需检查该字段是否为空。
不确定你是否想这样做,但效果很好。