首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery验证插件1.11.1 >规则>自定义逻辑运算符(=> rule1或rule2或rule3.)

jQuery验证插件1.11.1 >规则>自定义逻辑运算符(=> rule1或rule2或rule3.)
EN

Stack Overflow用户
提问于 2018-01-05 09:54:43
回答 2查看 290关注 0票数 0

举个例子,如何定义一个可以是空白或数字或"foo“的字段?

我现在有这样的情况:

代码语言:javascript
复制
var myValidator= jQuery2("#myFormId").validate({
    rules: {
        myField: {
            digits: true,
            required: false,
            maxlength: 9999,
            myCustomRule: true
        }
}});
jQuery2.validator.addMethod("myCustomRule", function(value, element) {
    return value === "foo" || value=="";
}, "myMessage");

但是,jQuery验证插件会自动在需求之间应用一个逻辑运算符,我怎么能有一个OR呢?(或者让我的自定义方法调用jQuery验证插件内置规则,比如数字?我不是javascript大师,也许这在源代码上是显而易见的吗?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-05 10:34:45

以下是如何做这件事。您不能在您的情况下使用digits: true,因为您希望它是一个数字或"foo“。

代码语言:javascript
复制
var myValidator = $("#myFormId").validate({
  rules: {
    myField: {
      required: false,
      maxlength: 9,
      myCustomRule: true
    }
  }
});

$.validator.addMethod("myCustomRule", function(value, element) {
  return value === "" || value === "foo" || !isNaN(value);
}, "myMessage");
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<form id="myFormId">
  <input type="text" name="myField" />
</form>

票数 1
EN

Stack Overflow用户

发布于 2018-01-08 20:45:24

标题:.自定义逻辑运算符(=> rule1或rule2或rule3 3…)

当您声明此插件的规则时,它将应用所有使用逻辑和。

代码语言:javascript
复制
rules: {
    myField: {
        digits: true,
        //required: false, // <- 'false' is superfluous/default
        maxlength: 9999,
        myCustomRule: true
    }
}

上述声明表明,该字段必须满足digitsmaxlengthmyCustomRule;如果正确编写myCustomRule,则不会是required

在计算声明的规则列表时,这个插件中没有任何选项可以更改“或”和“或”。

使用OR运算符计算规则的唯一方法是创建一个将所有验证逻辑包含在一个函数中的单个自定义规则。

代码语言:javascript
复制
rules: {
    myField: {
        myCustomRule: true
    }
}

其中,myCustomRule包含您自己的函数,所有规则逻辑都由OR运算符分隔。有关您的确切示例的解决方案,请参阅下面。

..。如何定义可以是空白或数字或"foo“的字段?

必须创建一个自定义规则,在一个函数中执行所有这三个操作。

  • 空白:这被认为是“可选的”,当您创建自己的自定义规则时,它将不允许字段保持空白,除非使用OR运算符将结果与this.optional(element)进行比较。
  • "foo":使用value === "foo"
  • 位数:只需使用现有digits规则的代码/^\d+$/.test(value)

然后用OR操作符把它们串在一起..。

代码语言:javascript
复制
$.validator.addMethod("myCustomRule", function(value, element) {
    return this.optional(element) || value === "foo" || /^\d+$/.test(value);
}, "myMessage");

所有内容都包含在这个新的自定义规则中,所以您不能声明任何其他规则.

代码语言:javascript
复制
var myValidator = $("#myFormId").validate({
    rules: {
        myField: {
            myCustomRule: true
        }
    }
});

结果是一个“可选”字段,该字段还将验证数字或字符串"foo“。

演示: jsfiddle.net/tLoef0ov/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48111081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档