Javascript 无法在.net c中获取jquery的asp:复选框ID#

Javascript 无法在.net c中获取jquery的asp:复选框ID#,javascript,jquery,asp.net,checkbox,selector,Javascript,Jquery,Asp.net,Checkbox,Selector,有人知道这是怎么回事吗?我的aspx文件中有以下代码: <tr> <th class="graytext r">Add Reps to Team:</th> <td> <asp:GridView ID="grid" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="dsEmp

有人知道这是怎么回事吗?我的aspx文件中有以下代码:

<tr>   
    <th class="graytext r">Add Reps to Team:</th>
    <td>           
     <asp:GridView ID="grid" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="dsEmployees" EnableViewState="false" GridLines="None" CssClass="clGridDirectory">
            <Columns>
              <asp:TemplateField >
                <ItemTemplate>
                  <asp:CheckBox runat="server" ID="employee_name" Text='<%# Eval("fullname") %>'/> 
                  <asp:HiddenField runat="server" ID="employeeidToRep" Value='<%# Eval("employeeid") %>'/>
                  <asp:TextBox runat="server" ID="repID" Text='<%# Eval("rep_id") %>'  CssClass="cl_required_for_sale" data-messages="{required:'required'}" />
                  <asp:RequiredFieldValidator ID="reqvrepID" runat="server" ControlToValidate="repID" Display="Dynamic" EnableClientScript="true" ErrorMessage="required" />
                </ItemTemplate>
              </asp:TemplateField>
            </Columns>
          </asp:GridView>
       <asp:SqlDataSource ID="dsEmployees" runat="server" ConnectionString="<%$ ConnectionStrings:TestConnectionString %>" SelectCommand="app_staff_without_team_select" SelectCommandType="StoredProcedure">
      </asp:SqlDataSource>        
    </td>
</tr> 

向团队中添加代表:
我尝试在用户单击复选框后使用以下代码获取警报:

<script type="text/javascript">
    $('#<%= employee_name.ClientID %>').change(function () {
        alert('bingo')
    });
</script>

$('#')。更改(函数(){
警报(‘宾果’)
});
但是,当我尝试运行页面时,会显示错误消息:

Compilation Error 
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0103: The name 'employee_name' does not exist in the current context

Source Error:    

Line 121:  <script type="text/javascript">
Line 122:      $('#<%= employee_name.ClientID %>').click(function () {
编译错误
描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码。
编译器错误消息:CS0103:当前上下文中不存在名称“employee_name”
源错误:
第121行:
第122行:$('#')。单击(函数(){

有人知道我的jQuery代码出了什么问题吗?我怎么能只获取jQuery的复选框id呢?

将函数附加到复选框,单击形成文件背后的代码,即RowDataBound事件。与其直接执行此操作,不如直接执行此操作

您的javascript就像

  protected void GridView1_RowDataBound(object sender, 
                    GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            CheckBox checkBox = (CheckBox) row.FindControl("FordelingCheckBox");

            checkBox.Attributes.Add("onclick","javascript:alert('clicked')");
        }
    }

使用
CheckBox.CssClass
,而不是使用复选框的ID(这无论如何都不适用于模板中),例如:

CssClass="employee_name"
$('.employee_name').click(function() { alert('id: ' + this.id); });
然后,在jQuery中,选择器是
”。employee_name'
,例如:

CssClass="employee_name"
$('.employee_name').click(function() { alert('id: ' + this.id); });
您也可以使用

<asp:TemplateField>
    <ItemTemplate>
        <asp:CheckBox onclick="javascript:alert('clicked')" runat="server" ID="employee_name" Text='<%# Eval("fullname") %>' />                       
    </ItemTemplate>
</asp:TemplateField>


在复选框的
onclick event上添加JS函数我更喜欢这种方式。下面的jQuery选择器将向ID以“employee\u name”结尾的所有复选框添加事件处理程序

<script type="text/javascript">
        $(document).ready(function () {            
            $(':checkbox[id$="employee_name"]').change(function () {
                alert('bingo');
            });
        });
</script>

$(文档).ready(函数(){
$(':复选框[id$=“员工姓名])。更改(函数(){
警惕(“宾果”);
});
});

由于复选框位于重复数据的控件(中继器)中,因此网格视图生成的复选框id是动态的,而不是静态的(第一行的id=employee\u name\u 0或不同,具体取决于ClientdMode属性)

为了将事件处理程序添加到复选框中,您需要以不同的方式选择复选框,按css类或其他方式选择


附加说明:如果要使用项模板内的其他控件,则不能按其ID选择它们,原因与不能按ID选择复选框相同。为此,您需要向所需控件添加css类,并添加一个选择器,该选择器将选择具有特定c的复选框控件的同级lass.

您是如何尝试在
文档中添加此项的。准备好了吗?
部分?使用类选择器更好,因为在网格视图中,每个ID都会获得数字后缀,如employee_name1、employee_name2等,这些都是在运行时添加的。