如何使用jQuery验证检查确切的长度?

Nat*_*ong 25 validation jquery jquery-validate

使用jQuery Validation插件验证表单,如何确认字符串长度恰好为X个字符?

Nat*_*ong 51

由于(目前)没有内置方法,因此您需要添加自己的方法.这可行:

jQuery.validator.addMethod("exactlength", function(value, element, param) {
 return this.optional(element) || value.length == param;
}, $.validator.format("Please enter exactly {0} characters."));
Run Code Online (Sandbox Code Playgroud)

然后可以像这样使用:

$("#formtovalidate").validate({
  rules: {
    somefield: {
      exactlength: 10
    }
   });
Run Code Online (Sandbox Code Playgroud)

更新 - 工作原理

我被问到这是如何工作的.我不知道所有的细节; 我在以前存在的方法上建模了这种方法.但是,这是我解释它的最佳尝试.

  • 该函数中value,elementparam.
    • value 是在要验证的字段中输入的值
    • element 是场地本身
    • param是规则类型和冒号之后的任何东西.在上面的例子中,它是10英寸exactlength: 10
  • 下一行是一个return声明.这将验证方法的最终判定返回到调用它的代码.返回的任何验证方法true都是说'此字段通过验证!' 它将返回它所在行的值.
  • return后面是两个声明,通过"或"运算符分开的(||).
    • ||运营商表示"评估留下的这个项目.如果是真的,则返回true.如果没有,请尝试右边的那个.如果是真的,则返回true.否则,返回false.
      • 左边的项目是this.optional(element).如果规则中不需要该元素,则返回true,验证也将返回true.这意味着'如果我不告诉你这个领域是必需的,我不在乎它是否有效.'
      • 如果需要该字段,我们将移动到该字段的右侧||.这是实际的验证测试.它将字段输入的长度与您指定的长度进行比较.如果它们相同,则返回true,方法返回true,验证通过.否则,验证失败.

就是这样.有关进一步的帮助,请参阅文档,特别是有关自定义验证方法的部分.


Igo*_*gor 19

例:

rules : {
"someFieldName":{digits:true,minlength:20,maxlength:20}
}
Run Code Online (Sandbox Code Playgroud)