我的MVC4应用程序中有3个字段(fieldA,fieldB,fieldC),我根据fieldA的值显示/隐藏fieldB和fieldC。虽然显示/隐藏这些字段没有问题,但我无法阻止fieldB和fieldC在隐藏或禁用时进行验证。我尝试了3-4种不同的方法,即在showHideFields()方法中使用disabled,hidden属性,在jQuery(“#...”)中使用“ignore”属性.validate方法。但是他们都没有正常工作。你能不能请这样的解决方案来做到这一点?
剃刀:
function showHideFields() {
var $index = $('#fieldA').val();
if ($index == '1') {
$('#fieldB').show();
$('#fieldC').show();
}
else {
$('#fieldB').hide();
$('#fieldC').hide();
}
}
jQuery(function () {
jQuery("#fieldA").validate({
expression: "if (VAL) {return true;} else {return false;}",
message: "Please fill in this field"
});
jQuery("#fieldB").validate({
expression: "if (VAL) {return true;} else {return false;}",
message: "Please fill in this field"
});
jQuery("#fieldC").validate({
expression: "if (VAL) {return true;} else {return false;}",
message: "Please fill in this field"
});
...
}
答案 0 :(得分:1)
代码问题:
jQuery("#fieldC").validate({
expression: "if (VAL) {return true;} else {return false;}",
message: "Please fill in this field"
});
1).validate()
方法(来自jQuery Validate插件)无法附加到字段id
。它只能附在整个表格上。
2)expression:
应该是什么? <{3}}和VAL
未在您展示的任何地方定义。
至于您的问题,从版本1.9开始, There is no such option for this plugin 。没有特殊设置或选项;隐藏的字段将被忽略。
请注意,在此演示中field2
包含style="display:none"
,尽管声明了required
规则,但未经过验证...
DEMO:hidden fields are ignored by default using this plugin
修改强>
最后在OP的评论中披露:
“我按照该页面http://jsfiddle.net/eWe9a/上的示例进行了操作,根据该页面,我所遵循的只是真实的。”
当您使用geektantra.com/2009/09/jquery-live-form-validation标记问题并表示您使用的是jQuery.validate()
时,您使用the jQuery Validation plugin ,并且表示您正在使用{{1}}。
解决方案是包含您正在询问的正确插件,我的示例将完美适合您。
答案 1 :(得分:0)
似乎很奇怪,因为jQuery Validation
默认忽略隐藏字段。检查live demo。