Odczyt wybranej wartości z asp: RadioButtonList przy użyciu jQuery

Mam kod podobny do poniższego...

<p><label>Do you have buffet facilities?</label>
  <asp:RadioButtonList ID="blnBuffetMealFacilities:chk" runat="server">
    <asp:ListItem Text="Yes" Value="1"></asp:ListItem>
    <asp:ListItem Text="No" Value="0"></asp:ListItem>
  </asp:RadioButtonList></p>
<div id="HasBuffet">
  <p><label>What is the capacity for the buffet?</label>
  <asp:RadioButtonList ID="radBuffetCapacity" runat="server">
    <asp:ListItem Text="Suitable for upto 30 guests" value="0 to 30"></asp:ListItem>
    <asp:ListItem Text="Suitable for upto 50 guests" value="30 to 50"></asp:ListItem>
    <asp:ListItem Text="Suitable for upto 75 guests" value="50 to 75"></asp:ListItem>
    <asp:ListItem Text="Suitable for upto 100 guests" value="75 to 100"></asp:ListItem>
    <asp:ListItem Text="Suitable for upto 150 guests" value="100 to 150"></asp:ListItem>
    <asp:ListItem Text="Suitable for upto 250 guests" value="150 to 250"></asp:ListItem>
    <asp:ListItem Text="Suitable for upto 400 guests" value="250 to 400"></asp:ListItem>
  </asp:RadioButtonList></p>
</div>

Chcę uchwycić zdarzenie, gdy lista radiowa blBuffetMealFacilities: chk zmienia stronę klienta i wykonuje funkcję slide down Na HasBuffet div z jQuery. Jaki jest najlepszy sposób, aby to stworzyć, mając na uwadze, że na stronie jest kilka podobnych sekcji, w których chcę, aby pytania były ujawniane w zależności od odpowiedzi tak nie na liście radiowej.

Author: thejartender, 2008-11-21

13 answers

To:

$('#rblDiv input').click(function(){
    alert($('#rblDiv input').index(this));
});

Wyświetli indeks przycisku radiowego, który został kliknięty (myślę, że nie przetestowany) (Uwaga, że musisz zawinąć RBL w #rblDiv

Możesz użyć tego, aby wyświetlić odpowiedni div w następujący sposób:

$('.divCollection div:eq(' + $('#rblDiv input').index(this) +')').show();
To miałeś na myśli?

Edit: innym podejściem byłoby nadanie RBL nazwy klasy, a następnie przejść:

$('.rblClass').val();
 30
Author: Andrew Bullock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-21 10:21:36

Prosty sposób na pobranie sprawdzonej wartości RadioButtonList1 to:

$('#RadioButtonList1 input:checked').val()

Edit by Tim:

Gdzie RadioButtonList1 musi być klientem listy RadioButtonList

var rblSelectedValue = $("#<%= RadioButtonList1.ClientID %> input:checked"); 
 86
Author: Vinh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 14:41:54

To mi pomogło...

<asp:RadioButtonList runat="server" ID="Intent">
  <asp:ListItem Value="Confirm">Yes!</asp:ListItem>
  <asp:ListItem Value="Postpone">Not now</asp:ListItem>
  <asp:ListItem Value="Decline">Never!</asp:ListItem>
</asp:RadioButtonList>

Opiekun:

$(document).ready(function () {
  $("#<%=Intent.ClientID%>").change(function(){
   var rbvalue = $("input[name='<%=Intent.UniqueID%>']:radio:checked").val();

   if(rbvalue == "Confirm"){
    alert("Woohoo, Thanks!");
   } else if (rbvalue == "Postpone"){
    alert("Well, I really hope it's soon");
   } else if (rbvalue == "Decline"){
    alert("Shucks!");
   } else {
    alert("How'd you get here? Who sent you?");
   }
  });
});

Ważna część: $("input[name=' ']:radio:checked").val();

 13
Author: Marcel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-04 12:57:35

Według mnie będzie dobrze działać...

Po prostu spróbuj z tym

   var GetValue=$('#radiobuttonListId').find(":checked").val();

Wartość Radiobuttonlist, która ma być zapisana w GetValue (zmiennej).

 5
Author: azarudeen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-03 07:27:20

Lista przycisków radiowych zamiast przycisków radiowych tworzy unikalne znaczniki id nazwa_0, nazwa_1 itd. Łatwy sposób na przetestowanie, które jest wybrane, polega na przypisaniu klasy css takiej jak

var deliveryService;
$('.deliveryservice input').each(function () {
    if (this.checked) {
        deliveryService = this.value
    }
 4
Author: Stephen Montgomery,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-10 07:23:07

Spróbuj tego:

$("input[name='<%=RadioButtonList1.UniqueID %>']:checked").val()
 4
Author: Vin05,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-21 19:41:43

Poniżej znajduje się kod, który ostatecznie stworzyliśmy. Najpierw Wyjaśnienie breif. Użyliśmy " q_ " dla nazwy div owiniętej wokół listy pytań przycisku opcji. Potem mieliśmy "s_" dla każdej sekcji. Poniższy kod przecina pytania, aby znaleźć sprawdzoną wartość, a następnie wykonuje akcję slajdów w odpowiedniej sekcji.

var shows_6 = function() {
  var selected = $("#q_7 input:radio:checked").val();
  if (selected == 'Groom') {
    $("#s_6").slideDown();
  } else {
    $("#s_6").slideUp();
  }
};
$('#q_7 input').ready(shows_6);
var shows_7 = function() {
  var selected = $("#q_7 input:radio:checked").val();
  if (selected == 'Bride') {
    $("#s_7").slideDown();
  } else {
    $("#s_7").slideUp();
  }
};
$('#q_7 input').ready(shows_7);
$(document).ready(function() {
  $('#q_7 input:radio').click(shows_6);
  $('#q_7 input:radio').click(shows_7);
});

<div id="q_7" class='question '><label>Who are you?</label> 
  <p>
    <label for="ctl00_ctl00_ContentMainPane_Body_ctl00_ctl00_chk_0">Bride</label>
    <input id="ctl00_ctl00_ContentMainPane_Body_ctl00_ctl00_chk_0" type="radio" name="ctl00$ctl00$ContentMainPane$Body$ctl00$ctl00$chk" value="Bride" />
  </p> 
  <p>
    <label for="ctl00_ctl00_ContentMainPane_Body_ctl00_ctl00_chk_1">Groom</label>
    <input id="ctl00_ctl00_ContentMainPane_Body_ctl00_ctl00_chk_1" type="radio" name="ctl00$ctl00$ContentMainPane$Body$ctl00$ctl00$chk" value="Groom" />
  </p> 

</div> 

Poniższe pozwala nam uczynić pytanie obowiązkowym...

<script type="text/javascript"> 
var mandatory_q_7 = function() {
  var selected = $("#q_7 input:radio:checked").val();
  if (selected != '') {
    $("#q_7").removeClass('error');
  }
};
$(document).ready(function() {
    $('#q_7 input:radio').click(function(){mandatory_q_7();});
});
</script> 
Oto przykład rzeczywistej warstwy Pokaż / Ukryj
<div class="section" id="s_6"> 
    <h2>Attire</h2> 
    ...
</div>
 1
Author: digiguru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-02 08:22:24

Wypróbuj poniższy kod:

<script type="text/javascript">
    $(document).ready(function () {

        $(".ratingButtons").buttonset();

    });
 </script>


<asp:RadioButtonList ID="RadioButtonList1" RepeatDirection="Horizontal" runat="server"
            AutoPostBack="True" DataSourceID="SqlDataSourceSizes"     DataTextField="ProdSize"
            CssClass="ratingButtons" DataValueField="_ProdSizeID" Font-Size="X-Small" 
            ForeColor="#666666">
</asp:RadioButtonList>
 1
Author: Shah Bdr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-04 08:32:04

Dlaczego tak skomplikowane?

$('#id:checked').val();

Będzie działać dobrze!

 1
Author: Predders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-27 12:35:51

Rozwiązanie Andrew Bullocka działa dobrze, chciałem tylko pokazać ci moje i dodać Ostrzeżenie.

//działa świetnie

$('#<%= radBuffetCapacity.ClientID %> input').click(function (e) {
   var val = $('#<%= radBuffetCapacity.ClientID %>').find('input:checked').val();
   //Do whatever
});

/ / Warning-działa w Firefoksie, ale nie IE8 .. używałem tego przez jakiś czas przed zauważeniem, że nie działa w IE8... przyzwyczaiłem się do wszystkiego, co działa we wszystkich przeglądarkach z jQuery podczas pracy w jednym.

$('#<%= radBuffetCapacity.ClientID %>').change(function (e) {
   var val = $('#<%= radBuffetCapacity.ClientID %>').find('input:checked').val();
   //Do whatever
});
 0
Author: Fischer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-17 10:14:26

Głosowałem na odpowiedź Vinha, aby uzyskać wartość.

Jeśli chcesz znaleźć odpowiednią etykietę, możesz użyć tego kodu:

$('#ClientID' + ' input:checked').parent().find('label').text()

 0
Author: RWL01,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-15 14:44:30

Dla mojego scenariusza, mój JS był w osobnym pliku, więc korzystanie z wyjścia Odpowiedzi klienta nie sprzyjało. Co zaskakujące, rozwiązanie było tak proste, jak dodanie CssClass do RadioButtonList, o czym dowiedziałem się na DevCurry

Wystarczy, że rozwiązanie zniknie, Dodaj klasę do listy przycisków radiowych

<asp:RadioButtonList id="rbl" runat="server" class="tbl">...

Jak zaznaczono w artykule, gdy lista przycisków radiowych jest renderowana, Klasa " tbl " jest dołączana do otaczającej tabeli

<table id="rbl" class="tbl" border="0">
<tr>...

Teraz z powodu Klasa CSS, która została dodana, możesz po prostu odwołać się do pozycji input:radio w tabeli, opartych na selektorze klasy css

$(function () {
            var $radBtn = $("table.tbl input:radio");
            $radBtn.click(function () {
                var $radChecked = $(':radio:checked');
                alert($radChecked.val());
            });
        });

Ponownie, pozwala to uniknąć korzystania z "ClientID" wymienione powyżej, które znalazłem bałagan dla mojego scenariusza. Mam nadzieję, że to pomoże!

 0
Author: ewitkows,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-21 17:16:35

Znalazłem proste rozwiązanie, spróbuj tego:

var Ocasiao = "";    
$('#ctl00_rdlOcasioesMarcas input').each(function() { if (this.checked) { Ocasiao = this.value } });
 0
Author: Felipe Fujiy Pessoto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-21 20:22:17