我试图一次性验证在线表单执行两个功能。第一种形式工作正常但第二种形式没有被执行。任何人都可以指出我的代码有什么问题吗?
function both(){
validation();
regex();
}
function validation(){
var valid = true;
var error = [];
if (document.check_in.forename.value == ""){
error.push("First Name");
valid = false;
}
if (document.check_in.surname.value == ""){
error.push("Surname");
valid = false;
}
if (valid == false) {
alert("Please fill in the following fields:\n" + error.join("\n") + ".");
}
return valid;
}
function regex(){
var fnameRE = /^[a-zA-Z]+$/;
var valid_reg = true;
var error_reg = [];
if (!fnameRE.test(document.check_in.forname.value)) {
error_reg.push("Please use characters only in First Name field.");
valid_reg = false;
}
else if (valid_reg == false) {
alert("Please fill s:\n" + error_reg.join("\n") + ".");
}
return valid_reg;
}
和HTML:
<form name="check_in" method="POST" action="form.html" onSubmit="return both()">
答案 0 :(得分:3)
我认为你需要像
这样的东西function both(){
return (validation() && regex())
}
只有当两个函数都通过验证时,“both”才会返回true
。否则返回false
答案 1 :(得分:0)
我不确定但是这可能是它....你在两个函数中都调用了两个函数,一旦遇到第一个return语句,你的代码执行就结束了。您是否尝试在regex()
功能中发出提醒?你可以尝试一下,在这里证明我的陈述对错。
你的解决方法:
function both(){
var valid = validation();
var regexvalid = regex();
if(valid && regexvalid)
return true;
else
return false;
}