【问题标题】:Mobile number validation not working properly using jquery validation [duplicate]使用jquery验证手机号码验证无法正常工作[重复]
【发布时间】:2019-04-27 06:38:02
【问题描述】:

我正在使用 jQuery 验证。我正在使用 minlength:8 和 maxlength:10 作为手机号码。

如果我添加 7 个数字,则验证有效

注意:我添加了 7 个带点 (.) 的数字,表示 8 已被接受。

(如果我在最后添加点(。),我会得到错误)

注意:我添加了 9 号,已被接受。

有什么方法可以让用户输入8位数字或10位数字?

你能帮我解决这个问题吗?

$("#testForm").validate({
  rules: {
    mobileno: {
      minlength: 8,
      maxlength: 10,
      number: true
    }
  },
  submitHandler: function(form) {
    $.ajax({
      url: baseUrl + "/Test_control/submitForm",
      type: "POST",
      data: $('#testForm').serialize(),

      success: function(data) {
        window.location.href = baseUrl + "/all_thankyou";

      },
    }); // AJAX Get Jquery statment
  }
});
<form name="form" id="testForm" action="#" method="post">

  <input type="text" name="mobileno">
  <input type="submit" name="send" value="Submit">

</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/additional-methods.min.js"></script>

【问题讨论】:

  • 请不要这样做。没有什么比让一个网站告诉我我的手机号码是错误的更糟糕的了,这是由一些没有考虑所有当前有效格式的程序员创建的有缺陷的验证,更不用说任何未来的格式了。如果您想验证手机号码,让用户输入他们想要的任何内容,并向其发送一条带有用户必须输入的响应代码的文本消息。
  • @ReddHerring,但是用户应该输入正确的数字。如果用户输入任何数字,则不需要此字段,则应进行验证。
  • 我的意思是你,程序员,不知道正确的数字是多少。即使你完成了这项工作,你的验证也会经常失败,以至于它在经济上毫无价值。与通过向用户地址发送内容来验证电子邮件一样,通过发送消息来验证电话号码。
  • 它接受点是因为number 规则包含十进制数字。如果您只想输入数字,那么您将使用digits 规则。大多数规则/方法在文档中都有解释。

标签: javascript jquery jquery-validate


【解决方案1】:

使用 addMethod

$(document).ready(function() {
                $.validator.addMethod(
                    "mobileValidation",
                    function(value, element) {
                        return !/^\d{8}$|^\d{10}$/.test(value) ? false : true;
                    },
                    "Mobile number invalid"
                );

                $("#form").validate({
                    rules: {
                        mobile: {
                            required: true,
                            mobileValidation: $("#mobile").val(),
                        },
                    },
                });
            });
 <script src="https://code.jquery.com/jquery-3.4.0.min.js"></script>

        <script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.0/dist/jquery.validate.min.js"></script>
        <form id="form">
            <input type="number" id="mobile" name="mobile" />
            <input type="submit" name="submit" value="submit" />
        </form>

【讨论】:

  • 仅供参考 - additional-methods.js 文件中包含多个电话号码规则,这些规则已经是此插件的一部分。
【解决方案2】:

如果您想使用正则表达式,那么这里有一个正则表达式代码,用于匹配最少 8 个或最多 10 个数字:/(^[1-9]{8,10})/g。在这里测试:https://regexr.com

【讨论】:

  • 投反对票的具体原因有哪些?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多