繁体   English   中英

为什么我的表单即使返回false仍仍在提交?

[英]Why is my form still submitting even though it returns false?

我编写了这段代码,使用提交按钮提交了带有名称和年龄字段的表单。 我的代码如下所示:

 function checkForm() { var name = document.forms["form"]["name"].value; var age = document.forms["form"]["age"].value; var regName = /^[AZ]*[az]{3,} $/; var regAge = /^[\\d.*]{1,} $/; if (name == regName && age == regAge) { return true; } else { return false; } } 
 <form name="form" action="register.php" method="POST" onsubmit="return checkForm()"> <p>Name:</p> <input type="text" name="name" id="name"> <br> <p>Age:</p> <input type="text" name="age" id="age"> <br> <br> <button type="submit" name="submit">Submit</button> </form> 

名称应仅使用大写和小写字母,并且年龄必须为数字和正整数。

据说,当我输入错误的数据时,表单不应返回false,而应返回true,然后将我发送到register.php。 我的代码有问题吗?

尝试添加event.preventDefault(); 当数据无效时。

function checkForm(event){
    var name = document.forms["form"]["name"].value;
    var age = document.forms["form"]["age"].value;
    var regName = /^[A-Z]*[a-z]{3,} $/;
    var regAge = /^[\d.*]{1,} $/;

    if (name == regName && age == regAge){
        return true;

    } else{
   event.preventDefault();
        return false;
    }
}

尝试使用pattern.test('stringMethod')评估正则表达式

function checkForm(event){
    var name = document.forms["form"]["name"].value;
    var age = document.forms["form"]["age"].value;
    var regName = /^[A-Z]*[a-z]{3,} $/;
    var regAge = /^[\d.*]{1,} $/;
    if (regName.test(name) && regAge.test(age)){
        return true;
    } else{
   event.preventDefault();
        return false;
    }
}

表单的默认行为类似于,如果您在提交时调用一个函数,它将被提交。 因此,您可以在按钮提交时调用该函数。

<button type="submit" name="submit" onsubmit="return checkForm()">Submit</button>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM