一个onclick中的两个函数 - Javascript

时间:2014-10-27 20:46:00

标签: javascript regex validation

我试图一次性验证在线表单执行两个功能。第一种形式工作正常但第二种形式没有被执行。任何人都可以指出我的代码有什么问题吗?

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()"> 

2 个答案:

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