Javascript表单验证

时间:2010-11-18 22:01:58

标签: javascript javascript-events

这真让我困扰。我只是希望表单在函数返回false时不提交。这是脚本。

function checkPass(){
                          var pass1 = document.getElementById('pass');
                          var pass2 = document.getElementById('pass2');
                          var message = document.getElementById('confirmMessage');
                          var goodColor = "#224466";
                          var badColor = "#900000";
                          if(pass1.value == pass2.value){
                            pass2.style.backgroundColor = goodColor;


                            return true;
                          }else{
                            pass2.style.backgroundColor = badColor;


                            return false;
                          }
                        }  

当我使用时,表单仍然汇总:

<form onsumbit="checkPass();">
</form>

当我用户

<form>
<input type="submit" onclick="checkPass();">
</form>

没有运气。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

表单 onsubmit 事件中使用此功能:

onsubmit="return checkPass()"

或者这个提交按钮(输入标签):

onclick="return checkForm()"

答案 1 :(得分:2)

如果您使用的是xhtml,请确保'onsubmit'为小写。

<form onsubmit="return checkPass()" ... >

答案 2 :(得分:1)

正如M2X所说,你需要使用

<form onsubmit="return checkPass();">

原因是当你将事件处理程序作为一个属性分配时,内部实际发生的是创建一个新的匿名函数,包含在属性中的代码中,并且该函数需要返回将阻止的值或允许表格提交。

因此,您的原始onsubmit属性将变为:

function() {
    checkPass();
}

执行checkPass函数但丢弃其返回值。通过在属性中包含return,它将变为:

function() {
    return checkPass();
}

将返回checkPass函数返回给它的值,从而达到预期的效果。