2009-12-31 7 views
5

J'ajoute une case à cocher à une page en utilisant l'instruction suivante;jQuery pour obtenir l'attribut de texte d'une case à cocher

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

Je dois obtenir l'attribut Texte de cette case à cocher lors d'un clic. J'ai essayé $(this).attr('Text'); à l'intérieur $('input[type=checkbox]').click(function(){}); mais il renvoie undefined.

Où est-ce que je me trompe? Veuillez suggérer.

acclamations

Répondre

10

ASP .NET rend la propriété Text du contrôle du serveur ASP:CheckBox, comme un élément label juste après la <input type="checkbox" /> sur le balisage généré au niveau du client, il ressemble à ceci :

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

Vous pouvez obtenir le text du label par:

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

Cela fonctionne parfaitement. Merci. – Arnkrishn

+0

De rien Andriyev! – CMS

0

Cela dépend de la façon dont vous implémentez ce que vous appelez « texte ».

Si c'est comme ça:

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

Ensuite, vous pouvez accéder au texte comme celui-ci:

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

Si vous le faites comme ça

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

Je pense que vous êtes pas de chance. Mettez une portée autour du texte si vous devez le faire de cette façon et la saisir comme ceci:

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

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

Il n'y a pas d'attribut 'text' ou de contenu d'élément pour les cases à cocher. – bobince

+0

Mais vous pouvez ajouter un attribut à l'élément et y accéder depuis jQuery. –

1

Le contrôle CheckBox rend le Text dans un élément <label>. Le texte ne fait pas partie de la case à cocher HTML. Si vous voulez obtenir le texte de jQuery, vous devez l'obtenir à partir du <label>.

En outre, le <label> qu'il génère ne possède pas d'ID. Si votre CheckBox est nommée checkBox1, alors le HTML qu'il sortira sera <label for="CheckBox1">, et le texte se trouve à l'intérieur de cet élément. Je crois que la syntaxe jQuery correcte serait:

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