2017-04-03 59 views
0

當我運行此代碼時,它似乎沒有做我期望的。所以這是一個驗證,當我運行if語句時,驗證程序在碰到false時停止運行。但是當它從其他函數numCheck中輸入false時,它會發出警報,但隨後會繼續。由於下面有更多的驗證,如果numCheck回來乾淨,我如何繼續通過驗證的其餘部分,而不是切斷它是否屬實?我哪裏錯了?Javascript函數,調用另一個函數,但返回false不會停止

function numCheck(num){ 
 
\t if(isNaN(num)){ 
 
\t \t alert("Vendor number must be numeric"); 
 
\t \t focusTo(document.forms["parts"]["vendorNo"]); 
 
\t \t return false; 
 
\t } 
 
} 
 

 
function validateForm(){ 
 
//DECLARATION 
 
\t var vendorNo = document.forms["parts"]["vendorNo"].value; 
 
//VENDOR NUMBER 
 
    numCheck(vendorNo); 
 
\t if(vendorNo.length != 4){ 
 
\t \t alert("Please enter 4 digit Vendor Number"); 
 
\t \t focusTo(document.forms["parts"]["vendorNo"]); 
 
\t \t return false; 
 
\t }

預先感謝您,我已經花了很多時間試圖弄清楚這一點。

回答

1

還必須從父返回(呼叫)功能,validateForm

你的子程序numCheck將返回到調用函數validateForm

function numCheck(num){ 
 
\t if(isNaN(num)){ 
 
\t \t alert("Vendor number must be numeric"); 
 
\t \t focusTo(document.forms["parts"]["vendorNo"]); 
 
\t \t return false; 
 
\t } 
 
return true; 
 
} 
 

 
function validateForm(){ 
 
//DECLARATION 
 
\t var vendorNo = document.forms["parts"]["vendorNo"].value; 
 
//VENDOR NUMBER 
 
    if (numCheck(vendorNo)==false){ 
 
    console.log("Invalid vendorNumber"); 
 
    return; // you must also return from the calling function, otherwise the code will still continue. 
 
    } 
 
\t if(vendorNo.length != 4){ 
 
\t \t alert("Please enter 4 digit Vendor Number"); 
 
\t \t focusTo(document.forms["parts"]["vendorNo"]); 
 
\t \t return false; 
 
\t }

1

numCheck返回並不意味着validateForm已經返回任何東西。檢查返回值numCheck,然後採取適當的措施。

function validateForm(){ 
    ... 
    // numCheck returns a boolean here. If it returns false, return from this function 
    if(!numCheck(vendorNo)) { 
    return false; 
    } 
.... 
相關問題