双重提醒消息

问题描述:

我想用jQuery做一些验证。当我为每个字段创建错误时,我会在警报中收到2条消息。这是我的jsfiddle双重提醒消息

function isEmail(email) { 
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    return regex.test(email); 
} 


$("#submitButton").click(function(){ 

     var mesajEroare = ""; 

     /* verifica daca email-ul este true */ 
     if(isEmail($("#email").val()) == false) { 
     /* arata mesaj eroare */ 
     mesajEroare += "<p>Email-ul introdus nu este valid</p>"; 
     } 

     /* verificare nr telefon daca este numeric */ 
     if($.isNumeric($("#telefon").val()) == false){ 
     /* arata mesaj eroare la telefon*/ 
     mesajEroare += "<p>Numarul de telefon introdus nu este valid</p>"; 
     } 

     alert(mesajEroare); 

}); 
+2

你只想要1?也许你需要'mesajEroare ='而不是'mesajEroare + =' – putvande

+0

谢谢!祝你今天愉快! – CIonut

在你的代码的问题是,你是追加字符串,这意味着初始字符串mesajEroare = ""两个字符串如果条件true结束。

根据你的要求,你应该只使用=而不是+=

+0

谢谢!祝你有美好的一天! – CIonut

+0

但是,如果用户输入'dd'作为电子邮件,'aa'输入电话,那么应该打印这两个错误。 –

+0

在这种情况下,您应该创建一个包含消息的数组,并对数组执行循环并显示每个分隔的消息。答案是针对所问的问题。 –

问题是你用或不用和错误警报,因为你只是外面写的警报功能,你应该使用:

function isEmail(email) { 
     var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
     return regex.test(email); 
    } 

    $("#submitButton").click(function(){ 

    var mesajEroare = ""; 
    var fieldMissing = ""; 

    if($("#email").val() == ""){ 
    fieldMissing += "<p>email</p>"; 
    } else if (isEmail($("#email").val()) == false) { 
    mesajEroare += "<p>Email-ul introdus nu este valid</p>"; 
    } 

    if($("#telefon").val() == ""){ 
    fieldMissing += "<p>telefon</p>"; 
    } else if ($.isNumeric($("#telefon").val()) == false){ 
    mesajEroare += "<p>Numarul de telefon introdus nu este valid</p>"; 
    } 

    if($("#password").val() == ""){ 
    fieldMissing += "<p>parola</p>"; 
    } 

    if($("#passwordConfirma").val() == ""){ 
    fieldMissing += "<p>confirma parola</p>"; 
    } else if($("#password").val() != $("#passwordConfirma").val()){ 
    mesajEroare += "<p>Parola nu este la fel</p>"; 
    } 

    if(fieldMissing != ""){ 
    mesajEroare += "Nu ati completat urmatoarele casute" + fieldMissing; 
    } 

    if (mesajEroare != "") { // if found an error or more 
    console.log(mesajEroare); 
    } 

}); 
+3

或者你可以检查是否是一个消息,而不是添加另一个变量来计数消息? – putvande

+0

正确的,谢谢@putvande –

+0

我做了你如何说,我做了一个新的字段错误,但看看从电子邮件和号码电话的错误仍然在我的戒备...(我没有提醒空字段)https:/ /jsfiddle.net/262eLfr7/2/ – CIonut

道歉稍不相关的答案,但是,如果你想有更多的比一个错误消息,也许你想使用换行符,而不是<p>标记。

$('#submitButton').click(function() { 
    var message = ''; 

    if (!isEmail('notAnEmail')) { 
     message += 'Email not valid\n'; 
    } 

    if (!$.isNumeric('boom')) { 
     message += 'Phone number not valid\n'; 
    } 

    if (message) { 
     alert(message); 
    } 
}); 

如果你真的只需要在一个时间一个错误,并使用=代替+=你只会得到您的警报的最后一个错误消息。

+0

我在udemy完整的web开发者付款和验证正在做这件事,但我得到了双重错误,他没有......我不明白(谢谢你的帮助)。 – CIonut