【问题标题】:Email not validating completely with jQuery validation使用 jQuery 验证无法完全验证电子邮件
【发布时间】:2016-04-09 08:37:57
【问题描述】:

例如,电子邮件地址未完全验证。我有一个电子邮件字段,我正在通过 jQuery 验证插件对其进行验证。当我输入“abbcss”之类的内容时,它说电子邮件无效。然后我输入“abbcss@g”,错误消失了,你可以看到电子邮件仍然无效。为了更好地理解,我在这里放了一个小提琴。

$(document).ready(function(e) {
    $('#email').keyup(function(){
			$('#checkform').validate();
	 });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="//getbootstrap.com/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//cdn.jsdelivr.net/jquery.validation/1.15.0/jquery.validate.js"></script>


<form id="checkform">
<input id="email" type="email" name="email">
</form>
<hr>
<p>Try to put first "abcc" and click outside field </p>
<p>then try to put "abcc@gmail" and click outside field </p>
<p>it will consider it a valid email but actually it is not.</p>

任何有关此问题的帮助都将得到适当的帮助。

【问题讨论】:

    标签: jquery validation email


    【解决方案1】:

    您可以使用 jquery 验证插件add method 来验证电子邮件

    jQuery.validator.addMethod("validate_email", function(value, element) {
    
        if (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(value)) {
            return true;
        } else {
            return false;
        }
    }, "Please enter a valid Email.");
    
    $('#checkform').validate({
        rules: {
            email: {
                validate_email: true
            },
        }
    });
    

    【讨论】:

      【解决方案2】:

      除了在验证之前测试是否存在值,这与其他两个答案中发布的代码完全相同。就我而言,我有一个 optional 电子邮件字段,我想验证它,但前提是输入了电子邮件地址。

      $.validator.addMethod("OptionalButValidEmail", function (value, element) {
          // only test for email address validity if something is entered
          if (value.length > 1) {
              if (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(value)) {
                  return true;
              } else {
                  return false;
              }
          } else {
              return true;
          }
      }, "Please enter a valid Email.");
      

      【讨论】:

        【解决方案3】:
        $.validator.addMethod(
          'validateEmail',
          function(value, element) {
            return (
              this.optional(element) ||
              /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(
                value
              )
            );
          },
          'Please enter a valid email address.'
        );
        
        $('#form').validate({
          rules: {
            email: {
              validateEmail: true,
            },
        });
        

        【讨论】:

        • 这个答案与上面发布的答案并没有什么不同,您在大约 2 年后发布了它。不知道你为什么发布它......
        猜你喜欢
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        • 2018-07-30
        • 2018-04-02
        • 2018-05-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多