2012-07-26 164 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