简体   繁体   English

如何在表单验证中显示不同的错误消息

[英]How to show different error messages in form validation

I have one form with different input types.Here I need to show error message depends on the user's input. 我有一个具有不同输入类型的表单。在这里,我需要根据用户输入显示错误消息。

If fields are empty,I will show Enter required fields . 如果字段为空,我将显示Enter required fields
If email is invalid I need to show Enter valid email . 如果电子邮件无效,则需要显示Enter valid email

But My code displays only Enter valid email message even fields are empty.why its displaying like this?What wrong with my code? 但是我的代码只显示Enter valid email消息,即使字段为空。为什么这样显示?我的代码有什么问题?

 $(document).ready(function () { $('#errorMsg').hide(); }) function submitForm() { $('#myForm').find('input,select').each(function () { var element = $(this).val() == undefined ? '' : $(this).val().trim(); if (element == '') { $(this).addClass('borderDanger'); $('#errorMsg').html('Enter all required fields'); $('#errorMsg').show(); } else { $(this).removeClass('borderDanger'); $('#errorMsg').html(''); $('#errorMsg').hide(); } }) $('#myForm').find('input[type="email"]').each(function () { var emailRejex = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/; if (String($(this)).match(emailRejex)) { $(this).removeClass('borderDanger'); $('#errorMsg').html(''); $('#errorMsg').hide(); } else { $(this).addClass('borderDanger'); $('#errorMsg').html('Enter valid Email'); $('#errorMsg').show(); } }) } 
 #errorMsg { width: 60%; padding: 9px; z-index: 9; margin-top: 4%; color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; border-radius: 4px; right: 5%; font-weight: bold; } .borderDanger { border:1px solid red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="errorMsg"></div> <div id="myForm"> <input type="text"> <input type="email"> <button onclick="submitForm()">Submit</button> </div> 

$('#errorMsg').html('Enter valid Email');

This part replace what ever is in '#errorMsg' , better way to show errors is liket this: (generate error variable with your error/errors then show at once) 这部分替换了'#errorMsg'中的内容,显示错误的更好方法是这样的:(使用您的错误生成错误变量,然后立即显示)

var errors = [];
if(error){
errors.push("error 1");
}
if(error){
errors.push("error 2");
}

then show them at once: 然后立即显示它们:

 $('#errorMsg').html(errors);
 $('#errorMsg').show();

like this 像这样

 // Code goes here $(document).ready(function () { $('#errorMsg').hide(); }) function submitForm() { var errors = '' $('#myForm').find('input,select').each(function () { var element = $(this).val() == undefined ? '' : $(this).val().trim(); if (element == '') { $(this).addClass('borderDanger'); errors += 'Enter all required fields </br>' $('#errorMsg').html(errors); $('#errorMsg').show(); } else { if($(this).attr('type') == 'email'){ var emailRejex = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/; if (String($(this)).match(emailRejex)) { $(this).removeClass('borderDanger'); $('#errorMsg').html(''); $('#errorMsg').hide(); } else { $(this).addClass('borderDanger'); errors += 'Enter valid Email' $('#errorMsg').html(errors); $('#errorMsg').show(); } } $(this).removeClass('borderDanger'); } }) $('#myForm').find('input[type="email"]').each(function () { }) } 
 #errorMsg { width: 60%; padding: 9px; z-index: 9; margin-top: 4%; color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; border-radius: 4px; right: 5%; font-weight: bold; } .borderDanger { border:1px solid red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="errorMsg"></div> <div id="myForm"> <input type="text" /> <input type="email" /> <button onclick="submitForm()">Submit</button> </div> 

plankr plankr

Try this if you don't want invalid email message when textbox is empty 如果不想在文本框为空时发送无效的电子邮件,请尝试此操作

    $('#myForm').find('input[type="email"]').each(function () {
//Check if email is empty
     var element = $(this).val() == undefined ? '' :$(this).val().trim();
           if (element == '') return;
                        var emailRejex = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/;
                        if (String($(this)).match(emailRejex)) { 
                         $(this).removeClass('borderDanger');
                         $('#errorMsg').html('');
                         $('#errorMsg').hide();
                        }
                        else{
                         $(this).addClass('borderDanger');
                 $('#errorMsg').html('Enter valid Email');
                 $('#errorMsg').show();
                        }
              })

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM