【问题标题】:How to check if a validation rule exists on an element in javascript如何检查javascript中的元素是否存在验证规则
【发布时间】:2017-10-10 09:39:18
【问题描述】:

我需要在 datepicker 上添加自定义验证,就像我们通过在 javascript 中添加规则来添加自定义验证一样 - jQuery Validate Plugin - How to create a simple custom rule?

但在同一元素上添加更多自定义验证器之前,我需要验证是否存在另一种规则/验证器方法。

我该如何检查?我知道我可以得到所有规则,比如 -

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

【问题讨论】:

  • 请提供一些代码
  • 我需要添加和删除规则,例如 - $(element).rules("remove", "date");在添加或删除之前,我需要检查是否添加了验证器规则,就像我们有一个大于日期的验证器一样。如何从我喜欢的规则列表中获取它 - var rules = $(element).rules();

标签: javascript jquery jquery-validate


【解决方案1】:

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');
}

【讨论】:

    【解决方案2】:

    初始化验证插件后,所有定义了规则的元素都会在你调用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");在添加或删除之前,我需要检查是否添加了验证器规则,就像我们有一个大于日期的验证器一样。如何从我喜欢的规则列表中获取它 - var rules = $(element).rules();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2015-04-30
    相关资源
    最近更新 更多