如何将control.ClientId传递给ASP.NET中的OnClick函数?

时间:2012-08-03 12:22:23

标签: c# asp.net .net

根据此question,在选中/取消选中复选框时,我会尝试打开/关闭各种RequiredFieldValidator控件。但是我没有为每个复选框设置单独的js函数,而是要传递输入的ClientID以进行验证,这样的事情(这里只有一个INPUT,但是一旦它工作就可以看到我可以在没有更多js的情况下添加更多的INPUT): / p>

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

目前不评估scriptlet txtSubject.ClientID,只是直接输出。我确信这很简单,但我只是不知道合适的语法。

3 个答案:

答案 0 :(得分:2)

如何通过codebehind(或脚本部分)添加它:

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

This explaination of ClientID可能会有所帮助。

答案 1 :(得分:0)

这是因为; ASP.NET解析器无法解析服务器标记“&lt;%=%&gt;”用于服务器端控制(即,作为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> 

答案 2 :(得分: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>