2011-02-04 39 views
0

昨天有一些很好的幫助,並有後續問題/問題。關於HTML表單,當用戶點擊onSubmit =「return outer()」時,函數'outer'只返回裏面兩個函數之一(checkname或checkpostal)。我如何得到它來檢查兩個功能? Noob問題我確定,但我想了解,而不是僅從表格中複製粘貼。javascript返回值第2部分

var postalconfig = /^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/; 

function outer() { 
    function checkname(f_name) { 
     if (document.myform.f_name.value == "") { 
      alert("Enter your First Name"); 
      return false; 
     } else { 
      alert("valid First Name"); 
      return true; 
     } 
    } 
    return checkname(); 

    function checkpostal(postal_code) { 
     if (postalconfig.test(document.myform.postal_code.value)) { 
      alert("VALID postal"); 
      return true; 
     } else { 
      alert("INVALID postal"); 
      return false; 
     } 
    } 
    return checkpostal(); 
} //end of outer 

的HTML:

<form name="myform" action="index.php" onSubmit="return outer();" method="post"> 
    First Name 
    <input name="f_name" type="text" /> 
    <br /> 
    Telephone 
    <input name="telephone" type="text" /> 
    <br /> 
    <input name="Submit" type="submit" value="Submit Form" > 
</form> 
+0

您應該通過單擊旁邊的最有用的一個空心檢查接受的答案。 – SLaks 2011-02-04 16:05:47

回答

3

功能外執行()停止時,您的收益。

試試這個單一return語句:

return checkname() && checkpostal(); 
+0

太棒了 - 完美的工作。只是好奇,如果你的表單有大量的元素呢?你會不會補充說明? Ex返回checkfirstname()&&檢查姓氏()&& checkpostal()等..? – 2011-02-04 15:42:31

+0

是的。但是,接下來會出現用戶體驗用戶問題,而這個用戶問題在很多年前就已經存在了,而且往往會經常被提出來:你的腳本只會說「某些字段無效,猜測哪些字段在測試失敗時」。有了很多字段,在打字時分別驗證每個字段的輸入會是一個更好的想法。 – BiAiB 2011-02-07 11:02:35

2

當你寫return checkname();,你的功能立即停止。
沒有辦法返回一個值,然後運行該函數的其餘部分。

相反,您需要調用兩個內部函數,然後使用邏輯運算符將它們合併爲一個布爾值。
例如:

return checkname() && checkpostal(); 
0

只是做一些事情,而不是或返回或在年底做。

return checkName()& & checkPostal();

0

你在做什麼在技術上是有效的,但我可能會建議你單獨定義函數。使用外乾脆打電話給他們,並檢查他們的價值觀,所以你必須:

function outer(){ 
    return (checkname() && checkpostal()); 
} 

function checkname(){ 
    // Code for checkname 
} 

function checkpostal(){ 
    // Code for checkpostal 
}