2012-07-26 162 views
0

我的目標是讓用戶輸入他的電子郵件,然後確認它。如果兩者不相同,則表單顯示錯誤。電子郵件確認jquery

以下作品中的代碼中找到不同之處在於,如果用戶

沒有。錯誤

的jQuery:

//Vérifie si l'email et sa répetition son identiques 
$('#RepetitionEmail').keyup(function(){ 

    var RepetitionEmail = $('#RepetitionEmail').val(); 

    if($("#RepetitionEmail").val()!=$("#Email").val()) 
    { 
     $('#RepetitionEmail').css('border-color','orange'); 
     $('.ErreurRepetitionEmail').text('Pas encore les mêmes ...'); 
     checkRepetitionEmail = "Repetition email pas identique"; 
    }else 
    { 
     $('#RepetitionEmail').css('border-color','#00ff00'); 
     $('.ErreurRepetitionEmail').text('... ça y est!'); 
     checkRepetitionEmail = "Repetition email ok"; 
    } 
}); 
+0

而不是'$('#RepetitionEmail').keyup'嘗試'$('#RepetitionEmail,#Email').keyup'。 – Engineer 2012-07-26 12:02:58

回答

5

您選擇更改此

$('#RepetitionEmail, #Email').keyup(function(){ 

它現在將監聽兩個輸入上的keyUp事件。

+0

完美,謝謝 – 2012-07-26 12:04:22

+0

如果解決了問題,請單擊答案旁邊的複選框以接受答案。這將結束這個問題。 – nunespascal 2012-07-26 12:21:02

-1
$('#RepetitionEmail, #Email').keyup(function(){ // do something } 
+0

這已在其他答案中提出。 – 2012-07-26 12:16:53

1

什麼this answer是正確的,你可以改進代碼。首先,當用戶僅使用鼠標粘貼文本時,您的當前代碼將失敗。其次,你有冗餘的代碼可以優化。

這裏是一個更好的方法來達到同樣的最終結果是:(假設你使用新的jQuery版本)

$("#MyForm").on("change", "#RepetitionEmail, #Email", function() { 
    var tbEmail = $("#Email"); 
    var tbConfirmEmail = $("#RepetitionEmail"); 
    var email = tbEmail.val(); 
    var confirmEmail = tbConfirmEmail.val(); 
    if (email.length === 0 || confirmEmail.length === 0) { 
     //user still did not fill up both. 
     return; 
    } 

    var borderColor = ""; 
    var errorText = ""; 
    if(email !== confirmEmail) 
    { 
     borderColor = "orange"; 
     errorText = "Pas encore les mêmes ..."; 
     checkRepetitionEmail = "Repetition email pas identique"; 
    }else 
    { 
     borderColor = "#00ff00"; 
     errorText = "... ça y est!"; 
     checkRepetitionEmail = "Repetition email ok"; 
    } 

    tbConfirmEmail.css('border-color', borderColor); 
    $('.ErreurRepetitionEmail').text(errorText); 
}); 

Live test case

處理change事件會更好,因爲無論文本如何更改,它都能正常工作。

如果您有更多的事情需要驗證或希望它更加靈活,請查看衆多jQuery驗證插件。

+0

我不知道它是我的瀏覽器還是其他東西,但是這段代碼並沒有完全相同的效果。它不顯示錯誤消息「活着」。我必須在輸入框外單擊以顯示消息。 – 2012-07-26 12:58:25

+0

@RubleGomes這是因爲'change'事件只會在您離開文本框時觸發,並且這是特意設計的。所有主要網站都使用它進行驗證,請檢查一下自己。 (例如,「此字段是必需的」僅在您離開字段時纔會顯示) – 2012-07-26 13:52:01

+0

啊我看到了,就像Gmail一樣。我不太喜歡這種方法的誠實。我更喜歡「活」的消息,所以用戶不必來回走動。無論如何,感謝您的回答,我會根據您的建議優化代碼,但我認爲我會保留keyup方法。 – 2012-07-26 14:35:15