2012-07-14 33 views
0

我有這樣的HTML代碼:jQuery驗證匹配電子郵件字段

<p> 
<label for="email">E-mail</label> 
<input id="email" name="email" placeholder="ex: [email protected]"/> 
</p>   
<p> 
<label for="email_alt">E-mail Alternativo</label> 
<input id="email_alt" name="email_alt" /> 
</p> 

,我想驗證如果郵件匹配的運行時間。

我發現在這裏的其中一個帖子在stackoverflow下面的代碼,我明白#author_email和#author_confirm_email是輸入的ID。據我所知,.blur是在運行時觸發警報。但我不瞭解觸發該功能的「.email」。我可以在那裏考慮我所擁有的代碼?

$(".email").blur(function(){ 
    //check to two here. 
    if ($("#author_email").val() != $("#author_confirm_email").val()) 
    { 
    //do something 
    } 
}); 

回答

1

如果您要檢查在運行時的字段(即當用戶輸入),你必須使用keyup事件(該事件在每次用戶按時間發射並釋放一個鍵):

$("#email_alt").keyup(function(){ 
    if ($("#email").val() != $("#email_alt").val()) { 
     // emails don't match 
    } 
}); 

沒有測試這個,但實際上它應該像那樣工作。

您可能想要添加一些進一步的驗證,例如,防止空字段並確保有效的電子郵件地址(如GTSouza建議)。

0

//

input#email 

//

input#email-confirm 

//

function IsValidEmail(a){var b=/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;return b.test(a)} 

var validate = true; 
$('input[name*="email"]:visible', $(this)).each(function(index, field){ 
      if(!IsValidEmail($(field).val()) && validate){ 
       $(field).focus().addClass('invalid'); 
       validate = false; 
       return false; 
      } 

      var confirm = $('#'+$(field).attr('id')+'-confirm'); 
      if(confirm.size() > 0){ 
       if($(field).val() != $(confirm).val()){ 
        $(field).focus().addClass('invalid'); 
        validate = false; 
        return false; 
       } 
      } 
     }); 
2

模糊事件被觸發每當對象失去焦點(即有人按下選項卡或點擊下一個輸入框)。請注意,「。」表示一個類,而「#」是一個ID。因此,在該代碼中,每當類名稱爲「email」的內容失去焦點時,就會調用該驗證函數。