2

RequiredFieldValidator基于这个问题,我正在尝试在选中/取消选中复选框时打开/关闭各种控件。但是,我不想为每个复选框设置一个单独的 js 函数,而是要传入输入的 ClientID 以进行验证,就像这样(这里只有一个 INPUT,但一旦它工作你就可以看到我可以添加更多 INPUT,而无需更多 js):

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

目前该 scriptlettxtSubject.ClientID没有被评估,只是直接输出。我确信这很简单,但我只是不知道适当的语法。

4

3 回答 3

2

如何通过代码隐藏(或脚本部分)添加它:

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

ClientID 的这种解释可能会有所帮助。

于 2012-08-03T13:29:57.370 回答
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 回答
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 回答