2009-12-31 9 views
5

Estoy agregando una casilla de verificación a una página usando la siguiente declaración;jQuery para obtener el atributo de texto de una casilla

<script language="C#" runat="server"> 
    protected void Page_Load (object src, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
     CheckBox XChkBox = new CheckBox(); //instance of System.Web.UI.WebControls.CheckBox 
     XChkBox.ID = "someId" 
     XChkBox.Text = "someText" 
     somePlaceHolder.Controls.Add(XChkBox); 
     } 
    } 
</script> 

Necesito obtener el atributo de texto de esa casilla de verificación al hacer clic. Intenté $(this).attr('Text'); dentro de $('input[type=checkbox]').click(function(){}); pero devuelve indefinido.

¿Dónde me estoy equivocando? Por favor recomiende.

aplausos

Respuesta

10

ASP .NET hace que la propiedad Text del control ASP:CheckBox servidor, como un elemento label justo después de la <input type="checkbox" /> en el marcado generado en el cliente, se ve algo como esto :

<input id="someId" type="checkbox" name="someId" /> 
<label for="someId"> someText </label> 

puede obtener el text del label por:

$("input:checkbox").click(function() { 
    var $label = $(this).next('label'); 
    alert($label.text()); 
}); 
+0

Esto funciona perfecto. Gracias. – Arnkrishn

+0

De nada, Andriyev! – CMS

0

Esto depende de cómo se va a implementar lo que se llama "texto".

Si es así:

<input id="chkFoo" type="checkbox" text="Check me, fool!" /> 

A continuación, se puede acceder al texto como este:

$("#chkFoo").attr("text") 

Si haces así

<input id="chkFoo" type="checkbox" />Check me, fool! 

Creo que eres sin suerte. Poner un lapso de alrededor del texto si usted tiene que hacerlo de esta manera y coger así:

<input id="chkFoo" type="checkbox" /><span id="spnFoo">Check me, fool!</span> 

$("#spnFoo").text() 
+2

No hay atributo 'text' ni contenido de elementos para las casillas de verificación. – bobince

+0

Pero podría agregar un atributo al elemento y acceder a él desde jQuery. –

1

El control CheckBox hace que el Text dentro de un elemento <label>. El texto no es parte de la casilla de verificación HTML. Si desea obtener el texto de jQuery, debe obtenerlo del <label>.

Además, el <label> que genera en realidad no tiene una ID. Si su CheckBox se llama checkBox1, entonces el HTML que genera será <label for="CheckBox1">, y el texto está dentro de ese elemento. Creo que la sintaxis de jQuery correcta sería:

$('label[for="checkBox1"]').html() 
Cuestiones relacionadas