为什么所有验证都在同一时间进行

时间:2017-10-20 18:25:10

标签: jquery html validation

这是jquery脚本。验证有效,但是如果将一个字段留空,然后单击字段到表单上,则表单中的每个字段都会显示所有验证消息,而不仅仅是空字段。您如何以我的示例中的格式验证jquery中的电子邮件地址?任何想法?感谢您提前提供任何帮助

$(document).ready(function() {
$('#firstname').on('blur', function() {
    if ($('#firstname').val() == '') {
        $('.errorMsg').show();
    } else {
        $('.errorMsg').hide();
    }
    });
     $('#lastname').on('blur', function() {
    if ($('#lastname').val() == '') {
        $('.errorMsg').show();
    } else {
        $('.errorMsg').hide();
    }
    });
     $('#email').on('blur', function() {
    if ($('#email').val() == '') {
        $('.errorMsg').show();
    } else {
        $('.errorMsg').hide();
    }
    });
    $('#roomtype').on('blur', function() {
    if ($('#roomtype').val() == '') {
        $('.errorMsg').show();
    } else {
        $('.errorMsg').hide();
    }
    });
});

1 个答案:

答案 0 :(得分:1)

因为您使用的是$('.errorMsg').show();,它会定位名称为errorMsg的所有类。

确保每个验证仅针对唯一错误消息

对每个输入

使用$(this).next(".errorMsg").show();$(this).next(".errorMsg").hide();

示例:

   if ($('#email').val() == '') {
        $(this).next(".errorMsg").show();
   } else {
        $(this).next(".errorMsg").hide();
   }

电子邮件验证示例:

$('.errorMsg').hide();

$('#email').on('blur', function(event) {
  if (event.target.checkValidity()){
    $(this).next('.errorMsg').hide();
  } else {
    $(this).next('.errorMsg').show();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form id="myform">
  <input id="email" type="email" placeholder="your email">
  <span class="errorMsg">Not Valid!!!!!!!!!!!</span>
</form>