使用jQuery验证插件在ASP.NET用户控件中对文本框进行条件验证

时间:2012-03-15 17:22:10

标签: jquery asp.net jquery-validate

在我的ASP.NET用户控件中,我有3个文本框,我正在使用jQuery进行验证,但是我遇到了一些问题,要求验证以我需要的方式运行。文本框用于名字,姓氏和公司名称,我想要做的是如果输入名字和姓氏,则不再需要公司名称。如果输入了公司名称,则不再需要名字和姓氏。

我有部分工作,但问题是当填充名字和姓氏文本框时,公司名称仍然显示为必需,并且当填充公司名称时,同样的情况发生,名字和姓氏仍然显示为需要。我对如何实现上面概述的内容感到茫然,我对jquery很新,这对任何一个都无济于事。到目前为止,这是我的代码:

$(document).ready(function () {

var firstNameCtrl = $('#<%= addressInfo.FirstNameClientID %>');
var lastNameCtrl = $('#<%= addressInfo.LastNameClientID %>');
var companyNameCtrl = $('#<%= addressInfo.CompanyClientID %>');
firstNameCtrl.focus();

$('form').validate({
    highlight: function (element, errorClass) {
        $(element).addClass("invalidElem");
    },
    unhighlight: function (element, errorClass) {
        $(element).removeClass("invalidElem");
    },
    errorElement: "div",
    errorClass: "errorMsg"
});

$.validator.addClassRules({
    nameValidation: {
        required: {
            depends: function (element) {
                return ($(companyNameCtrl).val() == '');
            } //end depends    
        } //end required
    }, //end nameValidation
    companyValidation: {
        required: {
            depends: function (element) {
                return ($(firstNameCtrl).val() == '' &&
                        $(lastNameCtrl).val() == '');
            }
        }
    }
})

$(firstNameCtrl).add(lastNameCtrl).add(companyNameCtrl).addClass("nameValidation").change(function (e) {
        $('form').validate().element($(e.target));
});
$(companyNameCtrl).addClass("companyValidation").change(function (e) {
    $('form').validate().element($(e.target));
});
}); //end ready

希望我的问题有道理。 感谢

1 个答案:

答案 0 :(得分:0)

你确定领域正在回归''。尝试在那里发出警报,这样你就可以真正看到它的价值。

例如。

$.validator.addClassRules({
nameValidation: {
    required: {
        depends: function (element) {
            alert($(companyNameCtrl).val());
            return ($(companyNameCtrl).val() == '');
        } //end depends    
    } //end required
}, //end nameValidation