[英]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.