【问题标题】:jQuery validation plugin: accept only alphabetical characters?jQuery 验证插件:只接受字母字符?
【发布时间】:2010-05-08 13:05:37
【问题描述】:

我想使用 jQuery 的验证插件来验证一个只接受字母字符的字段,但似乎没有定义它的规则。我搜索了谷歌,但没有发现任何有用的东西。

有什么想法吗?

感谢您的帮助。

【问题讨论】:

    标签: jquery validation jquery-validate


    【解决方案1】:

    如果您包含其他方法文件,这里是 1.7 的当前文件:http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js

    您可以使用lettersonly 规则 :) 附加方法是您下载的 zip 的一部分,您始终可以找到最新的here

    这是一个例子:

    $("form").validate({
      rules: {
        myField: { lettersonly: true }
      }
    });
    

    值得注意的是,每个附加方法都是独立的,您可以包含特定的方法,只需将其放在您的 .validate() 调用之前:

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

    【讨论】:

    • ^[A-Za-z]+$ 也接受大写字母,或使用 toLowerCase() 函数将值设置为小写。
    【解决方案2】:

    小心,

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

    [a-z, " "] 通过添加逗号和引号,您允许空格、逗号和引号进入输入框。

    对于空格 + 文本,只需这样做:

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

    [a-z] 这允许空格和文本。

    .................................................. ......................

    如果您在消息中已经有消息,则不需要消息“请仅输入字母和空格”:

    messages:{
            firstname:{
            required: "Enter your first name",
            minlength: jQuery.format("Enter at least (2) characters"),
            maxlength:jQuery.format("First name too long more than (80) characters"),
            lettersonly:jQuery.format("letters only mate")
            },
    

    亚当

    【讨论】:

      【解决方案3】:

      尼克和亚当的答案都非常有效。

      如果您想像我想要的那样允许像 áç 这样的拉丁字符,我想添加一条注释:

      jQuery.validator.addMethod('lettersonly', function(value, element) {
          return this.optional(element) || /^[a-z áãâäàéêëèíîïìóõôöòúûüùçñ]+$/i.test(value);
      }, "Letters and spaces only please");
      

      【讨论】:

      • 谢谢!但你也忘了 - 呵呵 :)
      • 谢谢@Andres!我刚刚更新了我的答案并添加了ñ
      • 太棒了,虽然这里可能会有一些额外的字母以防万一:å ø 并且可能应该添加一个破折号/连字符作为转义\-
      【解决方案4】:

      只是对尼克的回答的一个小补充(效果很好!):

      如果您想在字母之间允许空格,例如, 您可以限制只输入全名的字母,但它也应该允许空格 - 只需用逗号列出空格,如下所示。如果您需要允许任何其他特定字符,则以同样的方式:

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

      【讨论】:

        【解决方案5】:

        允许字母和空格

        jQuery.validator.addMethod("lettersonly", function(value, element) {
        return this.optional(element) || /^[a-z\s]+$/i.test(value);
        }, "Only alphabetical characters");
        
        $('#yourform').validate({
                rules: {
                    name_field: {
                        lettersonly: true
                    }
                }
            });
        

        【讨论】:

          【解决方案6】:
           $('.AlphabetsOnly').keypress(function (e) {
                  var regex = new RegExp(/^[a-zA-Z\s]+$/);
                  var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
                  if (regex.test(str)) {
                      return true;
                  }
                  else {
                      e.preventDefault();
                      return false;
                  }
              });
          

          【讨论】:

            猜你喜欢
            • 2023-03-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-09
            • 1970-01-01
            相关资源
            最近更新 更多