2016-05-25 54 views
0

我想顯示的消息是電子郵件地址僅在輸入電子郵件地址時無效,但它無效。如果沒有值輸入,我不想顯示消息 - 我只是使輸入邊框變紅。電子郵件驗證僅在輸入電子郵件時顯示消息,但不是有效的電子郵件

我試過,但它顯示的消息,即使字段爲空:

function validateEmail($email) { 
 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
 
    return emailReg.test($email); 
 
} 
 
if($(element).hasClass('email')) { 
 
    if(!validateEmail($('.email'))) { 
 
    $('<span>Please enter a valid email address</span>').insertAfter($(element)); 
 
    } 
 
}

我也試圖與qjeury驗證插件,但在這種情況下,它根本不顯示郵件錯誤所有:

var emails = ['email']; 
 
for(var i=0;i< emails.length;i++) { 
 
    var email = emails[i]; 
 
    rules[email] = {}; 
 
    rules[email].email = true; 
 
    rules[email].required = true; 
 
    msgs[email] = { 
 
    required:'', 
 
    email : "Please enter a valid email address", 
 
    } 
 
} 
 

 
var validateObj   = {} 
 
validateObj["rules"]  = rules; 
 
validateObj["messages"] = msgs; 
 
validateObj["onkeyup"] = function(element) { $(element).valid();}; 
 
validateObj["success"] = function(element) {}; 
 
validateObj["submitHandler"] = function (form) { 
 
    form.submit(); 
 
} 
 
$("#form").validate(validateObj);

+1

我可以」現在就進行測試,但你的jquery驗證代碼看起來很奇怪和不標準。這是一個非常常見的用例,應該有很多可以使用的代碼示例。避免使用自定義正則表達式進行電子郵件驗證,因爲它會在太多邊緣情況下失敗。 – user1751825

+0

這不是很自定義,我使用jQuery驗證插件,它只是用這種方式寫的。我定義了對象規則,消息 - 這只是語法。 –

回答

1

我真的覺得我幫助別人誰沒有嘗試自己做...

您可以使用($(element).val())來測試,如果你的輸入爲空。

對於這個工作,只是聲明瞭一個empty-email類彩色邊框

if($(element).hasClass('email')) { 
    if($(element).val()){ 
     if(!validateEmail($(element))) { 
      $('<span>').text('Please enter a valid email address').insertAfter($(element)); 
     } 
    }else{ 
     $(element).addClass('empty-email'); 
    } 
} 
+0

哦,真的,我很累,我沒有想到:( –

+0

不是一個好的解決方案,因爲它仍然使用自定義電子郵件驗證。自定義電子郵件驗證是非常有問題的,應該避免。 – user1751825

1

我發現我的情況的解決方案使用jQuery驗證:

var emails = ['email']; 
 
for(var i=0;i< emails.length;i++) { 
 
    var email = emails[i]; 
 
    rules[email] = {}; 
 
    rules[email].email = true; 
 
    rules[email].required = true; 
 
    msgs[email] = {}; 
 
    msgs[email] = { 
 
    required:'', 
 
    email : "Please enter a valid email address", 
 
    } 
 
} 
 

 
if($(element).hasClass('email')) { 
 

 
    error.insertAfter($(element)); 
 

 
} 
 

 
};