Chcę uzyskać wybraną wartość z grupy przycisków opcji.
Oto mój HTML:
<div id="rates">
<input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
<input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
<input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate
</div>
Oto mój .js:
var rates = document.getElementById('rates').value;
var rate_value;
if(rates =='Fixed Rate'){
rate_value = document.getElementById('r1').value;
}else if(rates =='Variable Rate'){
rate_value = document.getElementById('r2').value;
}else if(rates =='Multi Rate'){
rate_value = document.getElementById('r3').value;
}
document.getElementById('results').innerHTML = rate_value;
Nadal jestem niezdefiniowany.
javascript
html
radio-button
ZombieBatman
źródło
źródło
$("input[type='radio'][name='rate']:checked").val();
.checked
<form></form>
pojemniku.Odpowiedzi:
Element stawek jest
div
, więc nie będzie miał wartości. Prawdopodobnieundefined
stąd pochodzi.checked
Nieruchomość powie Ci, czy dany element jest wybrany:źródło
$("input[name=rate]:checked").val()
[checked]
) szuka atrybutu (tj. stanu początkowego). Zamiast tego powinieneś użyć:checked
, który szuka właściwości (tj. Aktualny stan) i który jest prawie zawsze tym, czego chcesz.document.querySelectorAll("input[name=rate]:checked")[0].value
Działa to w IE9 i wyżej oraz we wszystkich innych przeglądarkach.
źródło
:checked
selektora.rate
nie są wymagane.:checked
element (elementy) - być może ma wszystko „zakodowane i buforowane” i jest toO(1)
operacja. O ile nie profilujesz go w celu wskazania, że czas zapytania rośnie wraz z liczbą elementów na stronie, lub jeśli nie rozumiesz kodu źródłowego przeglądarki, nie możesz tego stwierdzić.Możesz uzyskać wartość, używając
checked
właściwości.źródło
break
lubreturn
instrukcja wewnątrzif
bloku zatrzyma dodatkowe przejścia przez pętlę. Drobna uwaga, ale dobry styl.Dla was, ludzi żyjących na krawędzi:
Jest teraz coś o nazwie RadioNodeList, a dostęp do jego właściwości value zwróci wartość aktualnie sprawdzanego wejścia. To wyeliminuje konieczność pierwszego odfiltrowania „zaznaczonego” wejścia, jak widzimy w wielu opublikowanych odpowiedziach.
Przykładowy formularz
Aby pobrać sprawdzoną wartość, możesz zrobić coś takiego:
JSFiddle to udowodnić: http://jsfiddle.net/vjop5xtq/
Uwaga: zostało to zaimplementowane w przeglądarce Firefox 33 (wydaje się, że obsługuje to wszystkie inne główne przeglądarki). Starsze przeglądarki będą wymagać polfyill, aby działało
RadioNodeList
to poprawnieźródło
form.elements["test"].value
działa bardzo dobrze w Chrome [wersja 49.0.2623.87 m].Ten, który pracował dla mnie, jest podany poniżej z api.jquery.com.
HTML
JavaScript
Zmienna selectedOption będzie zawierać wartość wybranego przycisku opcji (tj.) O1 lub o2
źródło
Inną (najwyraźniej starszą) opcją jest użycie formatu: „document.nameOfTheForm.nameOfTheInput.value;” np. document.mainForm.rads.value;
Możesz odwołać się do elementu po jego nazwie w formularzu. Twój oryginalny kod HTML nie zawiera jednak elementu formularza.
Fiddle tutaj (działa w Chrome i Firefox): https://jsfiddle.net/Josh_Shields/23kg3tf4/1/
źródło
Użyj document.querySelector ('input [type = radio]: zaznaczone'). Value; aby uzyskać wartość zaznaczonego pola wyboru, możesz użyć innych atrybutów, aby uzyskać wartość, np. imię = płeć itp. Przejdź poniżej fragmentu kodu, na pewno będzie to pomocne,
Rozwiązanie
Dziękuję Ci
źródło
KOD HTML:
<input type="radio" name="rdoName" value="YES"/> <input type="radio" name="rdoName" value="NO"/>
KOD JQUERY:
Dostaniesz
źródło
W JavaScript możemy uzyskać wartości, używając identyfikatorów „
getElementById()
” w powyższym kodzie, który opublikowałeś ma nazwę inną niż Id, więc możesz zmodyfikować w ten sposóbużyj tej stawki_wartości zgodnie z Twoim kodem
źródło
Minął rok od pytania, ale myślałem, że znaczna poprawa odpowiedzi była możliwa. Uważam to za najłatwiejszy i najbardziej wszechstronny skrypt, ponieważ sprawdza, czy przycisk został sprawdzony, a jeśli tak, to jaka jest jego wartość:
Możesz także wywołać funkcję w ramach innej funkcji, na przykład:
źródło
Zakładając, że do twojego elementu formularza odwołuje się
myForm
zmienna poniżej, i że twoje przyciski opcji mają wspólną nazwę „my-radio-button-group-name”, poniższy kod jest zgodny ze standardem JavaScript i standardami (chociaż nie sprawdziłem, aby był dostępny wszędzie ):Powyższe da wartość zaznaczonego (lub wybranego, jak to się nazywa) elementu przycisku opcji, jeśli taki istnieje, lub w
null
inny sposób. Istotą tego rozwiązania jestnamedItem
funkcja, która działa szczególnie z przyciskami radiowymi.Zobacz HTMLFormElement.elements , HTMLFormControlsCollection.namedItem, a zwłaszcza RadioNodeList.value , ponieważ
namedItem
zwykle zwracaRadioNodeList
obiekt.Korzystam z MDN, ponieważ pozwala to śledzić zgodność standardów, przynajmniej w dużym stopniu, i ponieważ jest łatwiejszy do zrozumienia niż wiele publikacji WhatWG i W3C.
źródło
RadioNodeList
poprzez coś takiegoform.elements[name]
lubform[name]
(być może spekulację) lub poprzez moją powyższą składnię.wielokrotne bezpośrednie naciśnięcie przycisku opcji daje wartość PIERWSZEGO przycisku, a nie przycisku SPRAWDZONEGO. zamiast zapętlać przyciski radiowe, aby sprawdzić, który jest zaznaczony, wolę wywołać funkcję
onclick
javascript, która ustawia zmienną, którą można później dowolnie pobrać.który wzywa:
dodatkową zaletą jest to, że mogę przetwarzać dane i / lub reagować na sprawdzenie przycisku (w tym przypadku włączenie przycisku SUBMIT).
źródło
onchange
zamiast tego powinieneś powiązać zdarzenie, w przypadku gdy użytkownik używa klawiatury.Ulepszenie poprzednich sugerowanych funkcji:
źródło
Podchodzę do tego problemu z czystym javascript, aby znaleźć zaznaczony węzeł, znaleźć jego wartość i wyskoczyć z tablicy.
Zauważ, że używam funkcji strzałek . Zobacz ten skrzypce jako działający przykład.
źródło
tagName === 'INPUT'
sprawdzenie, aby upewnić się, że nie pracujesz nad tagami innymi niżinput
.Jeśli używasz jQuery:
$('input[name="rate"]:checked').val();
źródło
Możesz użyć,
.find()
aby zaznaczyć zaznaczony element:źródło
następnie...
źródło
rates.rate.value
notrates.value
document.getElementById("rates").rate.value
[lub]document.forms[0].rate.value
sprawdź wartość według ID:
źródło
Użyłem funkcji jQuery.click, aby uzyskać pożądany wynik:
Mam nadzieję, że to pomoże.
źródło
Jeśli przyciski mają postać
var myform = new FormData(getformbywhatever); myform.get("rate");
powyżej, QuerySelector jest lepszym rozwiązaniem. Jednak ta metoda jest łatwa do zrozumienia, szczególnie jeśli nie masz pojęcia o CSS. Poza tym pola wejściowe i tak prawdopodobnie mają formę.
Nie sprawdziłem, istnieją inne podobne rozwiązania, przepraszam za powtórzenie
źródło
zamiast tego nie można uzyskać wartości takiego przycisku opcji
źródło
Jeśli używasz
JQuery
, użyj poniżej fragmentu dla grupy przycisków opcji.źródło
Po prostu użyj:
document.querySelector('input[rate][checked]').value
źródło
document.querySelector('input[name = rate]:checked').value
źródło
Możesz także zapętlać przyciski za pomocą pętli forEach na elementach
źródło
https://codepen.io/anon/pen/YQxbZJ
HTML
JS
źródło
W PHP jest to bardzo prosta
strona HTML
Weź wartość z formy do php
źródło