2012-03-15 7 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