2009-02-27 5 views
6

Quelle est la méthode correcte pour obtenir un contrôle rendu par ASP.NET avec jQuery?Noms jQuery et ASP.NET

Exemple: J'ai une case à cocher qui a été généré comme ceci:

<input id="ctl00_Content_chkOk" type="checkbox" name="ctl00$Content$chkOk" /> 

Si je veux le sélectionner pour obtenir si elle est cochée, j'ai essayé ceci:

$('form input[name=chkOk]').attr("checked") 

et

$('chkOk').attr("checked") 

Mais cela n'a pas fonctionné, je devais le faire comme ça

$('form input[name=ctl00$Content$chkOk]').attr("checked") 

Et je suppose que cela aurait fonctionné aussi:

$('ctl00$Content$chkOk').attr("checked") 

Est-ce la bonne façon de le faire? Y a-t-il un autre sélecteur que je peux utiliser?

Répondre

12

Vous pouvez utiliser le contrôle côté serveur ClientID propriété:

var isChecked = $('#<%=YourCheckBox.ClientID%>').attr("checked"); 

ou vous pouvez utiliser la fonction "se termine par" sélecteur: attribute$=value

var isChecked = $('form input[name$=chkOk]').attr("checked"); 
0
$('#ctl00_Content_chkOk').attr('checked'); 
$('form #ctl00_Content_chkOk').attr('checked'); 
$('form input#ctl00_Content_chkOk').attr('checked'); 
$('form input#ctl00_Content_chkOk[type="checkbox"]').attr('checked'); 

Choisissez l'un;)

0

Oui, JQuery ne se soucie que de ce qui est rendu sur la page, que ce soit par le moteur ASP.NET ou par HTML simple, de sorte que vous devrez y accéder via la identifiant ou nom. Les deux versions inférieures que vous utiliseriez fonctionneraient aussi bien que $ ('# ct100_Content_chk0k'). Attr ("checked").

Adam

1

J'ai toujours utilisé cette notation

$('#ctl00_Content_chkOk:checked').length; // will evaluate as true when checked 
1

Vous pouvez faire

$ ("input [id * = _ chkOk]"). Attr ('checked');

0

J'ai tendance à aller et venir entre deux façons. J'utilise soit la propriété clientID du contrôle comme mentionné par CMS, soit je génère le code javascript dans mon code et j'utilise le ClientScriptManager de la page pour l'écrire dans le navigateur.