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>
有人知道为什么 dependent 方法未定义吗?
脚注:我还尝试使用规则添加方法来执行此操作(见下文)。该表单经过验证,并且在调用 validate() 时没有抛出任何错误,并且 ans_23 没有获得“必需”类....
$("#surveyForm").rules("add", {
ans_23: {
required: "#ans_22:checked"
}
});
最佳答案
我看到您的评论回复,将我的评论转换为答案...所以这里是:
$("#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
});
关于jQuery 验证器依赖于未定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026740/