2015-04-06 81 views
0

我想評估一個表單文本/電子郵件字段,看看是否有東西,如果是的話,通過正則表達式評估運行它。當我將正則表達式代碼包含在SendEmail函數和其他邏輯中時,它運行良好,但是當我試圖將正則表達式部分移出它自己的函數(validateEmailAddress)時,驗證仍然有效,但它似乎不希望返回false並停止。相反,它繼續到ajax部分,併發送電子郵件,無論它是否通過正則表達式測試。這是相同的代碼,所以我不確定爲什麼「返回false」在正則表達式移出它自己的函數後不起作用。JavaScript表單驗證 - 「假」不按需要工作

任何想法,感激,謝謝!

function validateEmailAddress(address) { 

    filter = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/; 
     if (!filter.test(address)) { 
     alert(address + ' - Is an invalid email address.'); 
     return false; 
    } 
    } 

    function SendEmail() { 
    var emailFromVal = document.getElementById("EmailFrom").value; 
    var emailToVal = document.getElementById("EmailTo").value; 

    if (emailFromVal != 0) { 
    validateEmailAddress(emailFromVal); 
    } else { 
    alert("Please provide your email address."); 
    return false;  
    } 

    if (emailToVal != 0) { 
    } 
    else { 
    alert("Please provide your friend's email address."); 
    return false; 
    } 

    $.ajax({ 
    method: 'POST', 
    url: '/_ajax/emailshare/', 
    dataType: 'json', 
    data: formCollection, 
    success: function (data) { 
     ///send that email out 
    } 
    }); 
    } 

回答

0

你是不是從validateEmailAddress()的返回值做任何事情,試試這個:

if (emailFromVal != 0) { 
    if(!validateEmailAddress(emailFromVal)){ 
     return false; 
    } 
} else { 
    alert("Please provide your email address."); 
    return false;  
} 

也,你需要從validateEmailAddress()返回true時,電子郵件是有效的:

function validateEmailAddress(address) { 
    filter = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/; 
    if (!filter.test(address)) { 
     alert(address + ' - Is an invalid email address.'); 
     return false; 
    } 
    return true; 
} 
+0

你真的幫我一把!非常感謝! – 2015-04-07 17:05:26

0

return false; in validateEmailAddress將僅從validateEmailAddress返回,而不是從封閉函數(SendEmail)返回。

的選項有:

  1. 從封閉 功能檢查validateEmailAddress返回值:(!validateEmailAddress(地址))

    如果返回false;

OR

  • 從validateEmailAddress拋出和捕獲從 包圍函數的誤差(這將允許誤差的 堆棧向上傳播到任意長度直到你捕捉它 - 也就是說,你不需要僅僅從封閉函數,而是從它的 調用者或它的調用者的調用者,等等等等。
  • +1

    你是對的,非常感謝!真的幫助我解決問題。 – 2015-04-07 17:06:18