2012-03-15 28 views
2

在我的ASP.NET用戶控件中,我有3個文本框,我使用jQuery驗證,但我有一些問題得到驗證功能我需要它的方式。文本框是用於名字,姓氏和公司名稱,我想要做的是輸入名字和姓氏,公司名稱不再需要。如果輸入公司名稱,則不再需要名字和姓氏。使用jQuery驗證插件ASP.NET用戶控件中的文本框的條件驗證

我有它的部分工作,但問題是當第一個和最後一個名稱文本框填充公司名稱仍然顯示爲需要和公司名稱填充時同樣發生,第一個和最後一個名稱仍顯示爲被要求。我不知道如何實現我上面概述的內容,我對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 

希望我的問題是有道理的。 謝謝

回答

0

你確實知道字段返回''。試着在那裏提醒一下,這樣你就可以真正看到它的價值。

例如。

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