如何在onSubmit()表单中实现多个javascript函数

时间:2017-07-23 09:20:29

标签: javascript html

我有4个js函数:validateDate,validateRoom,validateCardDate和validateCard

现在提交表单我想执行所有这些。如果第一个为真,我想执行第二个。我已经实施了一些建议:      返回fun1()&& fun2()&& FUN3()      return fun1(); FUN2() 并且做了包装功能..但是无法获得成功。

更新:我的代码是: 是他们在代码中的任何错误?到目前为止,每一次尝试都失败了。

function validateDate() {
var x = document.forms["form"]["checkin"].value;
var y = document.forms["form"]["checkout"].value;

if (x == y) {
    alert("checkout date should be different from checkin");
    return false;
}else if(x > y){
  alert("checkout date should be greater");
    return false;
}else{return true;}
}

function validateRoom() {

var a = document.forms["form"]["singleroom"].value;
var b = document.forms["form"]["doubleroom"].value;
var c = document.forms["form"]["tripleroom"].value;
if (a == 0 && b==0 && c==0) {
    alert("Please select atleast one field");
    return false;
}else{return true;}
}


function validateCardDate() {
var month = document.forms["form"]["month"].value;
var year = document.forms["form"]["year"].value;
var today = new Date();


if(year < today.getFullYear()){
  alert("Card is expired");
    return false;
}else if(year == today.getFullYear()){
  if(month <= today.getMonth())
    alert("Card is expired");
      return false;
} else {return true;}
}

function validateCard() {
var cardType = document.forms["card"]["cardType"].value;
var cardNumber = document.forms["card"]["cardNumber"].value;

if(cardType == "visa"){
var cardno = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;

if(cardNumber.match(cardno))  
    {  
  return true;  
    }  
  else  
    {  
    alert("Not a valid Visa credit card number!");  
    return false;  
    }  
}else if(cardType == "americanexpress"){
var cardno = /^(?:3[47][0-9]{13})$/;

if(cardNumber.match(cardno))  
    {  
  return true;  
    }  
  else  
    {  
    alert("Not a valid Amercican Express credit card number!");  
    return false;  
    }  
}else if(cardType == "mastercard"){
var cardno = /^(?:5[1-5][0-9]{14})$/;

if(cardNumber.match(cardno))  
    {  
  return true;  
    }  
  else  
    {  
    alert("Not a valid mastercard credit card number!");  
    return false;  
    }  
}
else if(cardType == "jcb"){
var cardno = /^(?:(?:2131|1800|35\d{3})\d{11})$/;

if(cardNumber.match(cardno))  
    {  
  return true;  
    }  
  else  
    {  
    alert("Not a valid JCB credit card number!");  
    return false;  
    }  
 }

 }

3 个答案:

答案 0 :(得分:0)

创建一个新函数,其中包含所有这四个函数

示例:

function ParentFunction() {
    validateDate()
    validateRoom()
    validateCardDate()
    validateCard()
}

onSubmit调用ParentFunction()。这样,您甚至可以使用参数和决策控件以您喜欢的任何顺序运行这些函数。

<强>更新

试试这个:

var validateDate = function () {
    // Statements
    return true // if conditions are what you want
}
var validateRoom = function () {
    // Statements
    return true // if conditions are what you want
}
var validateCardDate = function () {
    // Statements
    return true // if conditions are what you want
}
var validateCard = function () {
    // Statements
    return true // if conditions are what you want
}
function ParentFunction() {
    if (validateDate() == true) {
        if (validateRoom() == true) {
            if (validateCardDate() == true) {
                if (validateCard() == true) {
                    return true
                }
            }
        }
    }
    return false
}

希望它有所帮助!

答案 1 :(得分:0)

试试这个:

&#13;
&#13;
if (func1()){
  if(func2()){
    if(func3()){
      return func4()
    }else{
      return false;
    }
  }else{
    return false
  }
}else{
 return false
}
&#13;
&#13;
&#13;

每个函数func1 ... func4都应返回false或true值。

答案 2 :(得分:0)

简单地说:

int a1[5] = { 1, 2, 3, 4, 5};
int a2[5] = { 2, 3, 1, 5, 4};

然后做:

{{1}}

如果要执行第二个,如果第一个为真,那么

  • 第一个函数必须返回true

    如果(主()){如果(// otherfunction){}}