【问题标题】:jQueryValidate - Required field - depends doesn't workjQuery Validate - 必填字段 - 依赖不起作用
【发布时间】:2013-06-15 20:14:33
【问题描述】:

使用 jQueryValidate,我试图使一个字段仅在另一个特定字段为空时才需要。所以,在网上搜索后,我这样做了:

rules: {
     marque: {
          required: {
               depends: function() {
                    if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) {
                         return true;
                     }
                     else {
                         return false;
                     }
               }
          }
     }
}

不幸的是,它不起作用。但是,如果我这样做:

depends: function() {
     if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) {
          alert("Here!");
          return true;
      }
      else {
           return false;
      }
}

出现警告框。所以,我的测试似乎有效。 谁能告诉我我做错了什么? 我将 jQuery 1.8.3 和 qTip2 与 jQueryValidate 一起使用。 非常感谢!

【问题讨论】:

    标签: jquery validation jquery-validate


    【解决方案1】:

    根据您提供的内容,您对插件的语法和使用是正确的。你需要排查问题,所以先试试这个

    marque: {
        required: true;
    }
    

    简单。是否出现错误信息?如果是,那么试试这个

    marque: {
        required: {
            depends: function () { return true; /* or false */ }
        }
    }
    

    【讨论】:

    • 感谢您的回答!我这样做了,什么也没发生。也许问题在于该字段是一个下拉列表。所以,我使用了另一种形式的个人方法。它返回一个整数而不是“true”或“false”,现在它正在工作。
    【解决方案2】:

    你真的应该能够在没有depends 选项的情况下做到这一点,只需让函数直接在required 对象上工作:

    rules: {
         marque: {
              required:  function() {
                     if (($('#add_marque').val() == "Ajouter une marque" && (('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) {
                         return true;
                     }
                     else {
                         return false;
                     }
              }
         }
    }
    

    在这里查看一个更简单的工作示例:http://jsfiddle.net/ryleyb/3hqH6/1/

    【讨论】:

    • 您可以简单地使用 if...else 而不是:return (IF CONDITION HERE)
    • 我不想让提问者感到困惑——我要解决的问题是如何组织rules 对象。不过好点!
    • 这有助于解决我需要测试另一个字段的特定值的类似情况,depends 属性似乎是合适的。验证器在提供的函数上的 .call() 方法遇到错误,但传递给 required 的相同函数而不是按预期执行的布尔值。
    【解决方案3】:
    required: {
                        depends:function (element) {
                            if ($('#inter').val() == '11' && $('#inter_rson').val() == '8') {
                                return true;
                            } else if ($('#inter').val() != '11' && $('#inter_rson').val() == '8') {
                                return true;
                            } else if ($('#inter').val() == '11' && $('#inter_rson').val() != '8') {
                                return true
                            } else {
                                return false;
                            }
                         }
                    }
    

    正如 August Miller 所说,当元素依赖于其他值时,依赖就像魅力一样。如果你不使用依赖,你可能会卡在一个验证错误的屏幕。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      相关资源
      最近更新 更多