如何在JavaScript中检查元素是否存在验证规则

4

我需要在日期选择器上添加自定义验证,就像我们通过在JavaScript中添加规则一样添加自定义验证,例如这里的一个 - jQuery Validate Plugin - How to create a simple custom rule?

但是,在添加另一个自定义验证程序之前,我需要验证是否存在另一个规则/验证程序方法。

我该如何检查? 我知道可以获取所有规则,例如 -

var rules = $(element).rules();

请提供一些代码。 - Maxim
我需要添加和删除规则,例如 - $(element).rules("remove", "date"); 在添加或删除之前,我需要检查是否已添加验证器规则,例如我们有一个greaterthandate验证器。我该如何从我拥有的规则列表中获取它,例如 - var rules = $(element).rules(); - Shivani
2个回答

5

Rules是一种字典类型,可以像下面这样获取:

function findProperty(obj, key) {
    if (typeof obj === "object") {
        if (key in obj) {
            return true;
        } else {
            return false;
        }
    }
    return false;
}

var rules = $(element).rules();
if (rules) {
    var isGreater = findProperty(rules, 'greaterthandate');
}

1

初始化验证插件后,所有已定义规则的元素在调用rules()时将返回一个对象。该对象包含规则定义,您可以检查它们,类似于以下内容:

$('form').validate()

var fooRequired = $('#foo').rules().required || false;
var barRequired = $('#bar').rules().required || false;

console.log('foo required? ' + fooRequired);
console.log('bar required? ' + barRequired)
<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.js"></script>

<form>
  <input type="text" name="foo" id="foo" data-rule-required="true" />
  <input type="text" name="bar" id="bar" />
  <button type="submit">Go</button>
</form>


我需要添加和删除规则,例如 - $(element).rules("remove", "date"); 在添加或删除之前,我需要检查是否已添加验证器规则,例如我们有一个greaterthandate验证器。我该如何从我拥有的规则列表中获取它,例如 var rules = $(element).rules(); - Shivani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接