【问题标题】:jQuery Validation Depends and Require from GroupjQuery Validation Depends and Requires from Group
【发布时间】:2014-07-07 20:29:57
【问题描述】:

我有验证组的规则(需要 3 项之一)。这很好用,但是,我只需要 3 个要求中的 1 个取决于表单中的选择。

rules: {
  cloudfront_7: {
    require_from_group: {
      depends: function(element) {
        if ($( "#classify" ).val() == "PIC" ){
          return false;
        } else {
          return [1, ".verification-group"];
        }
      }
    }
  },
  cloudfront_8: {
    require_from_group: {
      depends: function(element) {
        if ($( "#classify" ).val() == "PIC" ){
          return false;
        } else {
          return [1, ".verification-group"];
        }
      }
    }
  },
  cloudfront_9: {
    require_from_group: {
      depends: function(element) {
        if ($( "#classify" ).val() == "PIC" ){
          return false;
        } else {
          return [1, ".verification-group"];
        }
      }
    }
  }
}

我注意到它只返回 true 而不是我编写的代码,这对于 require_from_group() 函数是必需的。

【问题讨论】:

  • 它应该在选择 PIC 时或其他情况下需要?因为看起来if else return 语句被颠倒了
  • 如果选择了 PIC,则不需要
  • 尝试从require_from_group中删除嵌套的depends,它应该像require_from_group:[1, ".verification-group"], depends: function(element){[..]}一样工作
  • 那不行,那将始终需要来自组并且条件不生效。

标签: javascript jquery jquery-validate depends


【解决方案1】:

你可以试试这个代码:

rules: {
cloudfront_7: {
require_from_group: {
param: [1, "..verification-group"],
depends: function(element) {return .....}
       }
    },
cloudfront_8: {
require_from_group: {
param: [1, "..verification-group"],
depends: function(element) {return .....}
       }
    },
cloudfront_9: {
require_from_group: {
param: [1, "..verification-group"],
depends: function(element) {return .....}
       }
    },
}

【讨论】:

    【解决方案2】:

    我使用这些自定义规则解决了这个问题:

    var verDoc_required = {
      cloudfront_7: {
        require_from_group: [1, ".verification-group"]
      },
      cloudfront_8: {
        require_from_group: [1, ".verification-group"]
      },
      cloudfront_9: {
        require_from_group: [1, ".verification-group"]
      }
    }
    
    $("#classify").change(function() {
      if ( $(this).val() == "PIC" ) {
        removeRules(verDoc_required);
      } else {
        addRules(verDoc_required);
      }
    });
    
    function addRules(rulesObj) {
      for (var item in rulesObj) {
         $('#' + item).rules('add', rulesObj[item]);
      }
    }
    function removeRules(rulesObj) {
      for (var item in rulesObj) {
         $('#' + item ).rules('remove');
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-26
      • 1970-01-01
      相关资源
      最近更新 更多