jQuery 验证器依赖于未定义的方法

jer*_*iuh 4 jquery jquery-validate

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
});
Run Code Online (Sandbox Code Playgroud)

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

被引用的 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>
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么depends 方法是未定义的?

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

$("#surveyForm").rules("add", {
  ans_23: {
    required: "#ans_22:checked"
  }
});
Run Code Online (Sandbox Code Playgroud)

rya*_*rns 6

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

$("#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
});
Run Code Online (Sandbox Code Playgroud)