javascript onsubmit()没有按预期工作


    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我调用了一个函数,它会删除所有不是一个数字从传递的字段。因此,每当用户在字段中输入除数字以外的任何字符时,该函数都会立即删除该字符。
在提交之后,我只需要检查字段是否为空白。



最新更新