W jQuery jak wybrać element według jego atrybutu name?

Na mojej stronie mam 3 przyciski radiowe, jak poniżej:

<label for="theme-grey">
  <input type="radio" id="theme-grey" name="theme" value="grey" />Grey</label>
<label for="theme-pink">
  <input type="radio" id="theme-pink" name="theme" value="pink" />Pink</label>
<label for="theme-green">
  <input type="radio" id="theme-green" name="theme" value="green" />Green</label>

W jQuery chcę uzyskać wartość wybranego przycisku radiowego po kliknięciu któregokolwiek z tych trzech przycisków. W jQuery mamy id ( # ) i class (.) selektory, ale co jeśli chcę znaleźć przycisk radiowy po jego nazwie, jak poniżej?

$("<radiobutton name attribute>").click(function(){});
Proszę mi powiedzieć, jak rozwiązać ten problem.
Author: Scorpion-Prince, 2009-06-12

18 answers

To powinno wystarczyć, wszystko to znajduje się w dokumentacji , która ma bardzo podobny przykład do tego:

$("input:radio[name=theme]").click(function() {
    var value = $(this).val();
});

Powinienem również zauważyć, że masz wiele identycznych identyfikatorów w tym fragmencie. To jest nieprawidłowy HTML. Używaj klas do grupowania zestawów elementów, a nie ID, ponieważ powinny one być unikalne.

 328
Author: Paolo Bergantino,
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-02-29 19:26:28

Aby określić, który przycisk radiowy jest zaznaczony, spróbuj tego:

$('input:radio[name=theme]').click(function() {
  var val = $('input:radio[name=theme]:checked').val();
});

Zdarzenie zostanie przechwycone dla wszystkich przycisków opcji w grupie, a wartość wybranego przycisku zostanie umieszczona w val.

Update: po wpisie uznałem, że powyższa odpowiedź Paolo jest lepsza, ponieważ używa jednego trawersu DOM mniej. Pozwalam, aby ta odpowiedź stała, ponieważ pokazuje, jak uzyskać wybrany element w sposób, który jest kompatybilny z przeglądarką.

 184
Author: jeff.mitchel,
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-06-12 15:23:06
$('input:radio[name=theme]:checked').val();
 155
Author: Jay,
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-06-04 05:42:51

Another way

$('input:radio[name=theme]').filter(":checked").val()
 39
Author: h0mayun,
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-11-30 05:34:57

To mi pasuje. Na przykład masz dwa przyciski radiowe o tej samej nazwie i po prostu chcesz uzyskać wartość zaznaczonego. Możesz spróbować tego.

$valueOfTheCheckedRadio = $('[name=radioName]:checked').val();
 20
Author: wdonayredroid,
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-09-07 17:38:47

Poniższy kod jest używany do uzyskania wybranej wartości przycisku radiowego przez nazwę

jQuery("input:radio[name=theme]:checked").val();

Dzięki Adnan

 14
Author: Muhammad Adnan,
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-03-06 11:04:50

Znalazłem to pytanie, ponieważ badałem błąd po uaktualnieniu z 1.7.2 jQuery do 1.8.2. Dodaję swoją odpowiedź, ponieważ nastąpiła zmiana w jQuery 1.8 i wyższych, która zmienia sposób odpowiedzi na to pytanie teraz.

W jQuery 1.8 mają przestarzałe pseudo-selektory, takie jak :radio,: checkbox,: text.

Aby wykonać powyższe, wystarczy zastąpić :radio [type=radio].

Więc Twoja odpowiedź staje się teraz dla wszystkich wersji jQuery 1.8 i powyżej:

$("input[type=radio][name=theme]").click(function() { 
    var value = $(this).val(); 
}); 

Możesz przeczytać o zmianie NA 1.8 readme i ticket specyficzny dla tej zmiany , a także zrozumieć dlaczego na stronie :selektor radia w sekcji Informacje dodatkowe.

 13
Author: klabranche,
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-10-03 17:02:20

Dla każdego, kto nie chce dołączać biblioteki, aby zrobić coś naprawdę prostego:

document.querySelector('[name="theme"]:checked').value;

Jsfiddle

Aby uzyskać przegląd aktualnych odpowiedzi sprawdź tutaj

 11
Author: A1rPun,
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
2017-01-16 12:56:42

Jeśli chcesz znać wartość domyślnego przycisku radiowego przed zdarzeniem kliknięcia, spróbuj tego:

alert($("input:radio:checked").val());
 9
Author: lhoess,
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-24 18:38:04

Możesz użyć funkcji filtrowania, jeśli masz więcej niż jedną grupę radiową na stronie, jak poniżej

$('input[type=radio]').change(function(){
    var value = $(this).filter(':checked' ).val();
    alert(value);
});

Oto adres URL

Http://jsfiddle.net/h6ye7/67/

 6
Author: Muhammad Salman,
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
2015-03-10 23:17:37
<input type="radio" name="ans3" value="help"> 
<input type="radio" name="ans3" value="help1">
<input type="radio" name="ans3" value="help2">

<input type="radio" name="ans2" value="test"> 
<input type="radio" name="ans2" value="test1">
<input type="radio" name="ans2" value="test2">

<script type="text/javascript">
  var ans3 = jq("input[name='ans3']:checked").val()
  var ans2 = jq("input[name='ans2']:checked").val()
</script>
 4
Author: kartheek,
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 06:33:46

Jeśli chcesz mieć wartość true / false, użyj tego:

  $("input:radio[name=theme]").is(":checked")
 4
Author: gls123,
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-08-05 16:17:46

Może coś takiego?

$("input:radio[name=theme]").click(function() { 
 ...
}); 

Kiedy klikniesz dowolny przycisk radiowy, wierzę, że zostanie wybrany, więc zostanie wywołany dla wybranego przycisku radiowego.

 3
Author: tschaible,
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-06-12 22:17:25

I masz więcej niż jedną grupę przycisków radiowych na tej samej stronie możesz również spróbować uzyskać wartość przycisku radiowego:

$("input:radio[type=radio]").click(function() {
    var value = $(this).val();
    alert(value);
});
Zdrówko!
 3
Author: ahmed,
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
2017-05-19 15:15:53

Może również użyć klasy CSS do zdefiniowania zakresu przycisków radiowych, a następnie użyć następujących wartości

$('.radio_check:checked').val()
 2
Author: Daniel Fernandes,
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-06-14 16:37:13

To mi pomogło..

HTML:

<input type="radio" class="radioClass" name="radioName" value="1" />Test<br/>
<input type="radio" class="radioClass" name="radioName" value="2" />Practice<br/>
<input type="radio" class="radioClass" name="radioName" value="3" />Both<br/>

Jquery:


    $(".radioClass").each(function() {
        if($(this).is(':checked'))
        alert($(this).val());
    });

Mam nadzieję, że to pomoże..
 1
Author: Ravi M,
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-26 08:11:44
$('input:radio[name=theme]').bind(
  'click',
  function(){
    $(this).val();
});
 0
Author: bluish,
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-20 09:17:04

Możesz zauważyć, że użycie selektora klas do uzyskania wartości kontrolek ASP.NET RadioButton jest zawsze puste i oto powód.

Tworzysz RadioButton Sterowanie w ASP.NET Jak poniżej:

<asp:RadioButton runat="server" ID="rbSingle" GroupName="Type" CssClass="radios" Text="Single" />
<asp:RadioButton runat="server" ID="rbDouble" GroupName="Type" CssClass="radios" Text="Double" />
<asp:RadioButton runat="server" ID="rbTriple" GroupName="Type" CssClass="radios" Text="Triple" />

I ASP.NET renderuje po HTML dla Twojego RadioButton

<span class="radios"><input id="Content_rbSingle" type="radio" name="ctl00$Content$Type" value="rbSingle" /><label for="Content_rbSingle">Single</label></span>
<span class="radios"><input id="Content_rbDouble" type="radio" name="ctl00$Content$Type" value="rbDouble" /><label for="Content_rbDouble">Double</label></span>
<span class="radios"><input id="Content_rbTriple" type="radio" name="ctl00$Content$Type" value="rbTriple" /><label for="Content_rbTriple">Triple</label></span>

Dla ASP.NET nie chcemy używać RadioButton nazwy kontrolnej lub identyfikatora, ponieważ mogą one zmienić się z dowolnego powodu poza ręką użytkownika (zmiana nazwy kontenera, nazwy formularza, nazwy usercontrol, ...) jak widać w powyższym kodzie.

Jedyny pozostały wykonalnym sposobem uzyskania wartości RadioButton za pomocą jQuery jest użycie klasy css, jak wspomniano w to odpowiedź na całkowicie niepowiązane pytanie, jak następuje

$('span.radios input:radio').click(function() {
    var value = $(this).val();
});
 0
Author: AaA,
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
2017-05-23 12:34:38