防止使用jQuery.validate()验证隐藏/禁用字段

时间:2013-12-05 19:37:58

标签: javascript jquery asp.net-mvc validation

我的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"
    });
    ...
}

2 个答案:

答案 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