【问题标题】:jQuery validate plugin : accept letters only?jQuery 验证插件:只接受字母?
【发布时间】:2023-03-31 21:52:01
【问题描述】:

我正在使用来自http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 的验证插件

我试图找到一种方法,让我的一些表单字段只接受字母,不接受数字,特殊字符等......

有什么想法吗? 非常感谢。

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    只需添加一个自定义验证器,然后像这样使用它:

    jQuery.validator.addMethod("accept", function(value, element, param) {
      return value.match(new RegExp("." + param + "$"));
    });
    

    只有数字:

    rules: {
      field: { accept: "[0-9]+" }
    }
    

    只有字母

    rules: {
      field: { accept: "[a-zA-Z]+" }
    }
    

    【讨论】:

    【解决方案2】:

    一个小小的改变。

    jQuery.validator.addMethod("accept", function(value, element, param) {
        return value.match(new RegExp("^" + param + "$"));
    });
    

    因为这样它接受了像“#abc”这样的表达式。

    【讨论】:

      【解决方案3】:

      在您的脚本中使用以下代码。 这将为您的验证器添加一个新子句。

      $.validator.addMethod(
              "alphabetsOnly",
              function(value, element, regexp) {
                  var re = new RegExp(regexp);
                  return this.optional(element) || re.test(value);
              },
              "Please check your input values again!!!."
      );
      $("#formElement").rules("add", {alphabetsOnly: "^[a-zA-Z'.\\s]$" })
      

      【讨论】:

        【解决方案4】:

        试试这个:(这是使用 jquery 验证器的完美自定义验证

        $(function() {
        
            $.validator.addMethod("alphabetsnspace", function(value, element) {
                return this.optional(element) || /^[a-zA-Z ]*$/.test(value);
            });
        
            $("#add-employee").validate({
                rules: {
                    employee_surname: {
                        required: true,
                        alphabetsnspace: true
                    },
                    employee_firstname: {
                        required: true,
                        alphabetsnspace: true
                    },
                    employee_othername: {
                        alphabetsnspace: true
                    },
                    father_name: {
                        required: true,
                        alphabetsnspace: true
                    },
                    mother_name: {
                        required: true,
                        alphabetsnspace: true
                    },
                    spouse_name: {
                        alphabetsnspace: true
                    },
                    ssn: {
                        number: true,
                    },
                    phone_no: {
                        number: true,
                    },
                    phone_no2: {
                        number: true,
                    },
                    passport: {
                        number: true,
                    },
                    driving_license: {
                        number: true,
                    },
                    email: {
                        email: true
                    }
                },
                messages:
                    {
                        "employee_surname":{
                            alphabetsnspace: "Please Enter Only Letters"
                        },
                        "employee_firstname":{
                            alphabetsnspace: "Please Enter Only Letters"
                        },
                        "employee_othername":{
                            alphabetsnspace: "Please Enter Only Letters"
                        },
                        "father_name":{
                            alphabetsnspace: "Please Enter Only Letters"
                        },
                        "mother_name":{
                            alphabetsnspace: "Please Enter Only Letters"
                        },
                        "spouse_name":{
                            alphabetsnspace: "Please Enter Only Letters"
                        },
                    }
            });
        });
        

        【讨论】:

          【解决方案5】:

          以下添加自定义验证器的方法可以正常工作,但验证发生在 keyup 上,因此在用户输入文本时不断弹出错误。

          return value.match(new RegExp(""));
          

          以下方法适用于字母和空格,非常适合名称字段。

          jQuery.validator.addMethod("alphabetsAndSpacesOnly", function (value, element) {
              return this.optional(element) || /^[a-zA-Z\s]+$/.test(value); });
          
              $("FieldId").rules("add", {
                  alphabetsAndSpacesOnly: true,
                  messages: { alphabetsAndSpacesOnly: "Please enter a valid name." }
              });
          

          【讨论】:

            【解决方案6】:

            试试这样:

                    var numbers = /[0-9]+/;
                    var SpCharacters = /^\s*[a-zA-Z0-9\s]+\s*$/;
            
                    if (!numbers.test(name) && !SpCharacters.test(name)) {
                        return [false, "Name should be alphabetical.", ""];
                    }
            

            【讨论】:

              【解决方案7】:

              jQuery Validate 插件已经有一个名为lettersonly 的规则作为the additional-methods.js file 的一部分,看起来像这样...

              $.validator.addMethod( "lettersonly", function( value, element ) {
                  return this.optional( element ) || /^[a-z]+$/i.test( value );
              }, "Letters only please" );
              

              【讨论】:

                【解决方案8】:

                添加cdn

                <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/additional-methods.js"></script>
                rules:{
                    txtname:{required: true,
                            lettersonly:true
                            }
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-11-04
                  • 1970-01-01
                  相关资源
                  最近更新 更多