2014-10-27 86 views
0

我試圖一次執行兩個函數驗證在線表單。第一種形式正常工作,但第二種形式沒有被執行。任何人都可以指出我的代碼有什麼問題嗎?一個onclick中的兩個函數 - Javascript

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

回答

3

我認爲你需要像

function both(){ 
    return (validation() && regex()) 
} 

這樣 「既」 將返回true僅在這兩個功能通過驗證。否則返回false

+0

您鍵入實快。 – 2014-10-27 20:49:42

+0

@ PM77-1是的我是一個戰士,代號「快速繪製」 – 2014-10-28 14:01:24

0

我不知道,但是這可能是它....你只要它遇到的第一個return語句調用帶有return語句兩種功能都在,你的代碼執行結束。您是否嘗試在regex()功能中添加警報?你可以試試看,並在這裏證明我的陳述是正確的還是錯誤的

你的解決方法:

function both(){ 
    var valid = validation(); 
    var regexvalid = regex(); 

    if(valid && regexvalid) 
      return true; 
    else 
      return false; 
} 
相關問題