【问题标题】:jQuery Validator depends method undefinedjQuery Validator 依赖方法未定义
【发布时间】:2012-01-26 22:58:37
【问题描述】:

Firebug 向我显示以下内容:

从以下验证器初始化:

$("#surveyForm").validate({
    errorPlacement: function(error, element) { 
    if ( element.is(":radio") ) {
        error.appendTo ( '#' + element.attr('name') + '_multiError' ); 
        } else if ( element.is(":checkbox") ) {
        error.appendTo ( '#' + element.attr('name') + '_multiError' );
        } else {
        error.appendTo( element.parent() );
        }
},
    rules: {
     ans_23: {
         depends: function(element) {
           return $("#ans_22:checked")
         }
 }
   },
   debug: true
});

该规则基于规则here 下的第二个示例。

被引用的 HTML 如下所示

<td class='two_columns'>
<label>
<input type='radio' name='rad_22' id='ans_22' class='required' value='Yes'  />  Other
</label>
<input type='text' name='ans_23' id='ans_23' value='' class='' />
</td>

有人知道为什么depends方法是未定义的吗?

脚注:我也尝试过使用规则添加方法(见下文)。当调用 validate() 并且 ans_23 没有获得“必需”类时,该表单已验证并且没有抛出任何错误......

$("#surveyForm").rules("add", {
  ans_23: {
    required: "#ans_22:checked"
  }
});

【问题讨论】:

  • return $("#ans_22:checked") 必须是 return $("#ans_22:checked").length
  • @alex - 谢谢。我已经添加但仍然收到来自 FireBug 的“检查元素 ans_23 时发生异常,检查 'depends' 方法 TypeError: $.validator.methods[method] is undefined”。
  • 创建一个jsfiddle.net,我可以帮助你:)
  • 看起来你可能错过了一个级别......“取决于”应该在“必需”之内 - 请参阅此 SO 帖子 - stackoverflow.com/questions/3975778/…
  • @alex - 谢谢!这里有两个:jsfiddle.net/pbSPnjsfiddle.net/AVG86/2

标签: jquery jquery-validate


【解决方案1】:

我看到您的评论回复,将我的评论转换为答案......所以这里是:

$("#surveyForm").validate({
    errorPlacement: function(error, element) { 
    if ( element.is(":radio") ) {
        error.appendTo ( '#' + element.attr('name') + '_multiError' ); 
        } else if ( element.is(":checkbox") ) {
        error.appendTo ( '#' + element.attr('name') + '_multiError' );
        } else {
        error.appendTo( element.parent() );
        }
},
    rules: {
     ans_23: {
         required: {
           depends: function(element) {
             return $("#ans_22:checked");
           }
         }
 }
   },
   debug: true
});

【讨论】:

  • 是的,我希望能够为您投票并相信答案 - 非常感谢您的帮助!解决了这个问题,我的一天有了很大的改善!
  • 这可行,但我不得不将 return $("#ans_22:checked"); 更改为 return $("#ans_22:checked").length;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
相关资源
最近更新 更多