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. 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.
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ą.
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();
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()
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();
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
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.
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
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());
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
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>
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")
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.
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!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()
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..
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();
});
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();
});
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