2

この質問RequiredFieldValidatorに基づいて、チェックボックスがチェックされている/チェックされていないときに、さまざまなコントロールをオン/オフしようとしています。しかし、検証する入力の ClientID に渡したいチェックボックスごとに個別の js 関数を用意するのではなく、次のようにします (ここでは INPUT は 1 つだけですが、動作していれば、js を追加せずに INPUT を追加できることがわかります)。

<asp:TextBox ID="txtSubject" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" runat="server" 
    OnClick="updateValidator('<%= rfvSubject.ClientID %>');" />
<asp:RequiredFieldValidator ID="rfvSubject" ControlToValidate="txtSubject" 
    ErrorMessage="You must enter a subject." runat="server" />

 <script>
 function updateValidator(inputId) {
      var enableValidator = !event.srcElement.checked;
      var theInput = document.getElementById(inputId);
      ValidatorEnable(theInput, enableValidator);
 }
 </script>

現在、そのスクリプトレットtxtSubject.ClientIDは評価されず、直接出力されるだけです。これは簡単だと思いますが、適切な構文がわかりません。

4

3 に答える 3

2

コードビハインド(またはスクリプトセクション)を介して追加するのはどうですか:

checkSubjectRequired.Attributes.Add("onclick", "updateValidator(" + 
  txtSubject.ClientID + ")");

この ClientID の説明が役立つ場合があります。

于 2012-08-03T13:29:57.370 に答える
0

あなたはこれを行うことができます:

    <asp:TextBox ID="txtSubject" runat="server" /> 
    <asp:CheckBox ID="chkSubjectRequired" runat="server"  
    OnClientClick="updateValidator(this.id);" /> 
<asp:RequiredFieldValidator ID="rfvSubject" ControlToValidate="txtSubject"  
    ErrorMessage="You must enter a subject." runat="server" /> 

 <script> 
 function updateValidator(inputId) { 
      var enableValidator = !event.srcElement.checked; 
      var theInput = document.getElementById(inputId); 
      ValidatorEnable(theInput, enableValidator); 
 } 
 </script>
于 2012-08-03T12:38:13.027 に答える
0

それの訳は; ASP.NET パーサーは、サーバー側コントロール (つまり、runat='server' として作成されたコントロール) のサーバー タグ "<% = %>" を解析できません。以下を使用します。

<asp:TextBox ID="txtSubject" runat="server" /> 
<asp:CheckBox ID="chkSubjectRequired" runat="server"  
    OnClick="updateValidator('<%#txtSubject.ClientID %>');" /> 
<asp:RequiredFieldValidator ID="rfvSubject" ControlToValidate="txtSubject"  
    ErrorMessage="You must enter a subject." runat="server" /> 

 <script> 
 function updateValidator(inputId) { 
      var enableValidator = !event.srcElement.checked; 
      var theInput = document.getElementById(inputId); 
      ValidatorEnable(theInput, enableValidator); 
 } 
 </script> 
于 2012-08-03T12:27:54.193 に答える