2009-10-08 12 views
8

Ich brauche so etwas wie dies zu tun:Wie erhalten Sie den geprüften Wert von asp: RadioButton mit jQuery?

<asp:RadioButton ID="rbDate" runat="server" Text="Date" GroupName="grpPrimary" /> 

und in der Lage, den Wert des Optionsfelds des überprüft Wert in jQuery zu überprüfen, aber meine Versuche wie diese nicht zurück wahr/falsch.

if ($('[name=rbDate]').attr("Checked")) 

if ($('[name=rbDate]').attr("Checked").val()) 

if ($('[name=rbDate]:checked').val()) 

Ein wenig Hilfe?

Antwort

17

Dies ist wahrscheinlich der einfachste Weg, es zu tun. Die * = sucht das gesamte ID-Attribut für rbDate, die für die gesamte ASP.NET ID Mangling kümmert.

$('input[id*=rbDate]').is(":checked"); 
+0

Ich verstehe es nicht. Warum den Attributfilter * contains * verwenden, wenn die ID spezifisch ist? Fehle ich etwas? – karim79

+0

+1 Von mir übrigens. Diese Antwort ist perfekt, aber wenn Sie nicht müssen, ist es schnell, dass Sie keinen Teil der ID haben müssen. –

+0

Ist das ein C# /. NET Ding? – karim79

5

Während ChaosPandion's answer funktionieren würde es schneller sein, Ihre RadioButtonList in einem div so wickeln:

<div id="dateWrapper"> 
    <asp:RadioButton 
     ID="rbDate" 
     runat="server" 
     Text="Date" 
     GroupName="grpPrimary" /> 
</div> 

Dann Code jQuery so einfach sein kann:

var selected = $("#dateWrapper input:radio:checked"); 
+0

Dies ist eine gute Lösung, aber in den meisten Fällen werden Sie den Geschwindigkeitsunterschied nicht bemerken. – ChaosPandion

+0

+1 Saubere Lösung, Absicht ist klar. –

+0

Extra Divs für einfacher (aber nicht kürzer) jQuery ist kein großer Kompromiss für das, was ich tue. Danke für die Idee! –

2

INamingContainer fügt ein Haufen Zeug an den Anfang der ID des tatsächlichen HTML.

$('input[id$=rbDate]').attr('checked') 

mit der [id $ = rbDate] Bit auf dem Selektor erzählt jQuery, dass Sie die Eingabe mit einem id möchten, die in rbDate endet

Nun, wenn Sie eine hatte, dass Sie den gewählten Wert haben wollte der gesamten Liste könnte man so etwas wie

$('input[name$=rbDate]:checked').val() 

, die, waren eines der Elemente ausgewählt zurückkehren würde den Wert des ausgewählten, oder, in diesem Optionsfeld Liste tun.

0

Hier ist meine JQuery Lösung, die die asp.net ID verwendet:

var rbSelected = $("#<%= rbDate.ClientID %>").is(":checked");