javascript onsubmit()不按预期工作

时间:2011-09-16 15:12:07

标签: javascript

    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)验证正在发生时,表单继续执行其操作。为什么?我很困惑。请帮忙

2 个答案:

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

不确定你是否想这样做,但效果很好。