2010-07-02 101 views
0

我在表單的第一步中發生了一些驗證。停止運行javascript函數

當單擊下一個按鈕時,將運行一個年齡驗證,如果它是真的,那麼它將運行三個函數。

function checkAge(form) 
{ 
    return false; 
} 

else { 
    validate('theForm','email'); 
    hideFormOne(); 
    showPartTwo(); 
    return false; 
}; 

而且功能

function validate(form_id,email){ 
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
    var address = document.forms[form_id].elements[email].value; 
    if(reg.test(address) == false) { 
    alert('Invalid Email Address');  
    return false; 
    } 
} 
function hideFormOne(container1) 
{ 
    document.getElementById('container1').style.display='none'; 
} 
function showPartTwo(container2) 
{ 
    document.getElementById('container2').style.display='block'; 
} 

我的問題是,如果電子郵件是無效的,警告彈出,但隨後被關閉時,它繼續運行在隱藏和顯示功能。我需要它只在電子郵件有效時才運行隱藏/顯示功能。

+0

的else下面checkAge()函數,是的,如果什麼條件的一部分? – pencilCake 2010-07-02 08:27:05

+0

@burak,我留下了那麼多,因爲它很長,並且與我的問題 @answers不相關,感謝所有偉大的反饋,我將嘗試這些! – Zac 2010-07-02 08:40:19

回答

4

由於您的validate函數返回true或false,您可以使用該值來決定該函數執行後要執行的操作。

if(validate('theForm', 'email')) { 
    hideFormOne(); 
    showPartTwo(); 
} 

以上是寫

var isValid = validate('theForm', 'email'); 
if(isValid) { 
    hideFormOne(); 
    showPartTwo(); 
} 

...其中isValid獲取從validate

+0

同意戴維 – 2010-07-02 08:28:24

+0

我試過這個,如果它失效,它會停止運行的功能。然而,現在沒有任何反應,如果它是真的。 – Zac 2010-07-02 08:48:05

+0

我通過在電子郵件驗證中創建一個else語句並將hide/show函數移到那裏來實現它。 – Zac 2010-07-02 08:54:16

0

檢查返回值是否validate()返回false,則返回從假的簡潔方式來電功能:

if (!validate('theForm','email')) 
{ 
    return false; 
} 

hideFormOne(); 
showPartTwo(); 
return false; 
0

然後改變你的邏輯在這部分代碼考慮到的validate

if (validate('theForm','email')) { 
    hideFormOne(); 
    showPartTwo(); 
} 
return false; 

}的返回值;

如果電子郵件地址有效,您還需要更改validate以返回true

0

更改您的validate函數返回true,如果有效。

則:

else { 
    if validate('theForm','email') { 
    hideFormOne(); 
    showPartTwo(); 
    }; 
    return false; 
};