Mam 3 przyciski opcji na mojej stronie internetowej, 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 opcji po kliknięciu dowolnego z tych trzech przycisków. W jQuery mamy selektory id (#) i class (.), Ale co jeśli chcę znaleźć przycisk opcji po jego nazwie, jak poniżej?
$("<radiobutton name attribute>").click(function(){});
Powiedz mi, jak rozwiązać ten problem.
javascript
jquery
html
radio-button
Prashant
źródło
źródło
document.querySelectorAll("input:radio[name=theme]").forEach(function() { this.onclick=function() { var value = this.value; }; });
Odpowiedzi:
Powinno to zrobić, wszystko to znajduje się w dokumentacji , która ma bardzo podobny przykład:
Powinienem również zauważyć, że w tym fragmencie masz wiele identycznych identyfikatorów. To jest nieprawidłowy HTML. Używaj klas do grupowania zestawu elementów, a nie identyfikatorów, ponieważ powinny być unikalne.
źródło
[type='radio']
zamiast:radio
tego jQuery może korzystać ze zwiększenia wydajności zapewnianego przez natywnąquerySelectorAll()
metodę DOM .Aby ustalić, który przycisk opcji jest zaznaczony, spróbuj tego:
Zdarzenie zostanie przechwycone dla wszystkich przycisków opcji w grupie, a wartość wybranego przycisku zostanie umieszczona w val.
Aktualizacja: Po opublikowaniu zdecydowałem, że powyższa odpowiedź Paolo jest lepsza, ponieważ używa jednego mniejszego przejścia DOM. Pozwalam na odpowiedź, ponieważ pokazuje, jak uzyskać wybrany element w sposób kompatybilny z różnymi przeglądarkami.
źródło
[type='radio']
zamiast:radio
tego jQuery może korzystać ze zwiększenia wydajności zapewnianego przez natywnąquerySelectorAll()
metodę DOM .:checked
aby sprawdzić, który przycisk jest zaznaczony, na przykład za pomocą modułu obsługi zdarzeń przesłania formularza, w którymthis
słowo kluczowe nie jest mapowane na kliknięty przycisk.źródło
$("input[name=theme]:checked").val();
(pomijając tę:radio
część i wydaje się, że działa dobrze w IE, FF, Safari i Chrome. Musiałem współpracować z jQ v 1.3 ... Oczywiście oznacza to, że jest tylko jeden element o nazwie „motyw”Inny sposób
źródło
$themeRadios = $('input:radio[name=theme'])
Ustawić dowolne moduły obsługi zdarzeń, a następnie uzyskać wartość za pomocą filtra, np$themeRadios.filter(":checked").val()
.To działa świetnie dla mnie. Na przykład masz dwa przyciski opcji o tej samej „nazwie” i chciałeś po prostu uzyskać wartość zaznaczonego. Możesz spróbować tego.
źródło
Poniższy kod służy do uzyskania wybranej wartości przycisku opcji według nazwy
Dzięki Adnan
źródło
Znalazłem to pytanie, gdy szukałem błędu po aktualizacji z wersji 1.7.2 jQuery do 1.8.2. Dodaję swoją odpowiedź, ponieważ w jQuery 1.8 i nowszych nastąpiła zmiana, która zmienia sposób, w jaki odpowiedź na to pytanie jest teraz.
W jQuery 1.8 przestali używać pseudoselektorów, takich jak: radio,: pole wyboru,: tekst.
Aby wykonać powyższe teraz po prostu wymienić
:radio
się[type=radio]
.Twoja odpowiedź jest teraz dostępna dla wszystkich wersji jQuery 1.8 i nowszych:
Możesz przeczytać o zmianie w pliku Readme 1.8 i specyficznym dla niej bilecie, a także zrozumieć, dlaczego : na stronie wyboru radia w sekcji Informacje dodatkowe.
źródło
$("input[type='radio'][name='theme']:checked")
Dla każdego, kto nie chce dołączać biblioteki, aby zrobić coś naprawdę prostego:
jsfiddle
Przegląd wydajności aktualnych odpowiedzi można znaleźć tutaj
źródło
Jeśli chcesz poznać wartość domyślnie wybranego przycisku opcji przed zdarzeniem kliknięcia, spróbuj tego:
źródło
Możesz użyć funkcji filtrowania, jeśli na stronie znajduje się więcej niż jedna grupa radiowa, jak poniżej
Oto adres URL skrzypce
http://jsfiddle.net/h6ye7/67/
źródło
źródło
Jeśli chcesz wartość prawda / fałsz, użyj tego:
źródło
Może coś takiego?
Po kliknięciu dowolnego przycisku opcji, sądzę, że zostanie on wybrany, więc zostanie on wywołany dla wybranego przycisku opcji.
źródło
Jeśli masz więcej niż jedną grupę przycisków opcji na tej samej stronie, możesz także spróbować uzyskać wartość przycisku opcji:
Twoje zdrowie!
źródło
może również użyć klasy CSS, aby zdefiniować zakres przycisków opcji, a następnie użyć poniższych, aby określić wartość
źródło
To działało dla mnie ..
HTML:
Jquery:
Mam nadzieję, że to pomoże..
źródło
źródło
Możesz zauważyć, że użycie selektora klasy w celu uzyskania wartości
ASP.NET RadioButton
kontrolek jest zawsze puste i oto powód.RadioButton
Kontrolę tworzysz wASP.NET
następujący sposób:I
ASP.NET
renderuje następujące HTML dla twojegoRadioButton
Ponieważ
ASP.NET
nie chcemy używaćRadioButton
nazwy kontrolnej ani identyfikatora, ponieważ mogą one zmieniać się z dowolnego powodu z ręki użytkownika (zmiana nazwy kontenera, nazwy formularza, nazwy kontroli użytkownika, ...), jak widać w powyższym kodzie.Jedynym możliwym do uzyskania sposobem uzyskania wartości przy
RadioButton
użyciu jQuery jest użycie klasy css, jak wspomniano w tej odpowiedzi na całkowicie niezwiązane pytanie, jak następujeźródło