2011-04-20 33 views
5

Tengo las siguientes casillas de verificación de control de servidor ASP.NET.casilla de verificación ASP.NET con jQuery

<asp:checkbox id="chkMonS1" runat="server" /> 
<asp:checkbox id="chkMonS2" runat="server" /> 
<asp:checkbox id="chkAllMon" runat="server" /> 

Y también otras casillas de verificación.

<asp:checkbox id="chkTueS1" runat="server" /> 
<asp:checkbox id="chkTueS2" runat="server" /> 
<asp:checkbox id="chkAllTue" runat="server" /> 

así que traté de usar jQuery para seleccionar todas las casillas de verificación como tal ..

<script type="text/javascript"> 
     $('chkAllMon').click(
     function() { 
      $('chkMonS1').attr('checked', true) 
      $('chkMonS2').attr('checked', true) 
     } 
     ) 
    </script> 

Sin embargo, esto no funciona. ¿Dónde salió mal?

Respuesta

8

Si está utilizando ASP.NET 4.0 o posterior, esto es fácil de solucionar.

En primer lugar, necesita un símbolo # en sus selectores jQuery, como este: $('#chkMonS1').

Además, tendrá que establecer ClientIdMode="Static" en los elementos de ASP.NET, como se muestra a continuación. Esto configurará el HTML id con el mismo valor que el ASP.NET id. Ver this article por la razón por la cual.

<asp:checkbox id="chkAllTue" runat="server" ClientIDMode="Static" />

0

Usted necesita un hash para seleccionar por id:

$('#chkAllMon').click(function() { 
    $('#chkMonS1').attr('checked', true) 
    $('#chkMonS2').attr('checked', true) 
}); 
+0

¿Cuál todavía no funcionaría en ASP.NET (debido a las convenciones de nomenclatura) –

9

que está tratando de utilizar el ID de servidor en el cliente. debería ser algo como esto:

$('#<%=chkAllMon.ClientID %>').click(
     function() { 
      $('#<%=chkMonS1.ClientID %>').attr('checked', true) 
      $('#<%=chkMonS2.ClientID %>').attr('checked', true) 
     } 

Explicación: ID de ASP.NET son Identificación del que se ve en el servidor. Cuando los controles ASP.NET se procesan en html, reciben otra identificación.

+0

Entonces, ¿cómo debería solucionarlo? –

+0

hola. ver mis ediciones – SquidScareMe

+0

Gracias. Visto. :) –

1

los ID de las casillas de verificación será muy diferente en el lado del cliente (con todos sus marcadores de posición, etc.) por lo que jQuery es simplemente no encontrarlos. Hay algunas soluciones que puede probar:

  1. Si el script está en la misma página que podría incrustar ClientId usando C#, así:

    $('#<%= chkMonS1.ClientId %>').attr("checked", true)

  2. Si el guión se incorpora en una archivo externo, y está usando ASP.NET 4.0 puede cambiar ClientIDMode a "Estático" y puede usar los Id. exactos de sus casillas de verificación (vea más aquí http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx)

  3. Puede intentar esto jquery selector para encontrar una casilla de verificación determinada (ya que la ID del cliente siempre va a terminar con la ID que asignó a pesar de lo que ASP.NET agrega al frente de la misma; Esto podría ser peligroso si está utilizando el mismo ID en diferentes contenedores de nomenclatura sin embargo):

    $('input[id$='chkMonS1']').attr("checked", true)

1

Si esto es ASP.NET 2.0 a continuación, es necesario utilizar el servidor generada ID:

<script type="text/javascript"> 
    $('#<%=chkAllMon.ClientID%>').click(
    function() { 
     $('#<%=chkMonS1.ClientID%>').attr('checked', true) 
     $('#<%=chkMonS2.ClientID%>').attr('checked', true) 
    } 
    ) 
</script> 

Si es ASP.NET 4.0, entonces vea ChessWiz's answer.

+0

Lo he intentado de esta manera, pero desafortunadamente, todavía no funciona. –

Cuestiones relacionadas