简体   繁体   English

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

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

I made this code which submits a form with a name and age field with a submit button. 我编写了这段代码,使用提交按钮提交了带有名称和年龄字段的表单。 My code looks like this: 我的代码如下所示:

 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> 

The name should be using only upper case and lower case letters and the age must be numerical and a positive integer. 名称应仅使用大写和小写字母,并且年龄必须为数字和正整数。

Supposedly, when I entered the wrong data, the form should not return false but its returning true and sending me through to register.php. 据说,当我输入错误的数据时,表单不应返回false,而应返回true,然后将我发送到register.php。 Is there something wrong with my code? 我的代码有问题吗?

Try to add event.preventDefault(); 尝试添加event.preventDefault(); when the data is invalid. 当数据无效时。

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;
    }
}

Try evaluating regex With pattern.test('stringMethod') 尝试使用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;
    }
}

Form default behaviour is like that if you are calling a function on submit it will get submit. 表单的默认行为类似于,如果您在提交时调用一个函数,它将被提交。 So you can call the function on button submit. 因此,您可以在按钮提交时调用该函数。

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

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

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