Mam dziwny problem z moim programem JS. Miałem to działało poprawnie, ale z jakiegoś powodu to już nie działa. Chcę tylko znaleźć wartość przycisku opcji (który jest wybrany) i zwrócić go do zmiennej. Z jakiegoś powodu powraca undefined
.
Oto mój kod:
function findSelection(field) {
var test = 'document.theForm.' + field;
var sizes = test;
alert(sizes);
for (i=0; i < sizes.length; i++) {
if (sizes[i].checked==true) {
alert(sizes[i].value + ' you got a value');
return sizes[i].value;
}
}
}
submitForm
:
function submitForm() {
var genderS = findSelection("genderS");
alert(genderS);
}
HTML:
<form action="#n" name="theForm">
<label for="gender">Gender: </label>
<input type="radio" name="genderS" value="1" checked> Male
<input type="radio" name="genderS" value="0" > Female<br><br>
<a href="javascript: submitForm()">Search</A>
</form>
javascript
html
for-loop
radio-button
Mkyong
źródło
źródło
Odpowiedzi:
Możesz zrobić coś takiego:
jsfiddle
Edycja: Dzięki HATCHA i jpsetung za sugestie dotyczące edycji.
źródło
@
składnia była przestarzała nawet wcześniej (jquery 1.2)@
należy zdecydowanie usunąćdocument.querySelector()
prawdopodobnie powinno być teraz zalecanym podejściem w prostym JavaScript.Działa to z każdym odkrywcą.
Jest to prosty sposób na uzyskanie wartości dowolnego typu danych wejściowych. Ty też nie , nie muszą zawierać ścieżkę jQuery.
źródło
document.querySelector(...)
isnull
.var selector = document.querySelector('input[name="genderS"]:checked'); if(selector) console.log(selector.value);
:checked
sztuczka całkowicie mnieaccountType = template.find("[name='optradio']:checked").value;
źródło
document.forms.your-form-name.name-shared-by-radio-buttons.value
Od jQuery 1.8 poprawna składnia zapytania jest następująca
Już
$('input[@name="genderS"]:checked').val();
nie, który działał w jQuery 1.7 (z @ ).źródło
Wersja ECMAScript 6
źródło
Najprostsze rozwiązanie:
źródło
Spróbuj tego
Skrzypce tutaj .
źródło
Edycja: Jak powiedział Chips_100, powinieneś użyć:
bezpośrednio, bez użycia zmiennej testowej.
Stara odpowiedź:
Nie powinieneś tego
eval
lubić?Nie wiem, jak to działa, ale dla mnie kopiujesz tylko ciąg znaków.
źródło
var sizes = document.theForm[field];
i usunąć pierwsze przypisanie, więc nie używajtest
już zmiennej.eval('var sizes=document.theForm.' + field)
?var sizes = eval(test);
zadziałałoby w ten sposób (testuję to tylko w firebug).field
w nawiasach kwadratowych. Masz jakieś domysły, dlaczego?To jest czysty JavaScript, oparty na odpowiedzi @Fontas, ale z kodem bezpieczeństwa, aby zwrócić pusty ciąg (i uniknąć a
TypeError
), jeśli nie ma wybranego przycisku opcji:Kod rozkłada się w następujący sposób:
<input>
typem, (b) maname
atrybutgenderS
, a (c) jest zaznaczone.genderSRadio
Zmienna jest truthy jeśli linia 1 znaleziska kontroli i / null falsey czy nie.W przypadku JQuery użyj odpowiedzi @ jbabey i zwróć uwagę, że jeśli nie ma wybranego przycisku opcji, nastąpi powrót
undefined
.źródło
Na wypadek, gdyby ktoś szukał odpowiedzi i wylądował tutaj tak jak ja, z Chrome 34 i Firefox 33 możesz wykonać następujące czynności:
lub prościej:
odwołanie: https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList/value
źródło
Oto przykład radia, w którym nie użyto atrybutu Checked = "selected"
DEMO : http://jsfiddle.net/ipsjolly/hgdWp/2/ [ Kliknij Znajdź bez wybierania radia ]
Źródło: http://bloggerplugnplay.blogspot.in/2013/01/validateget-checked-radio-value-in.html
źródło
Oto dobry sposób na uzyskanie wartości zaznaczonego przycisku opcji za pomocą zwykłego JavaScript:
Źródło: https://ultimatecourses.com/blog/get-value-checked-radio-buttons
Za pomocą tego HTML:
Można także użyć Array Znajdź na
checked
własność, aby znaleźć sprawdzany przedmiot:źródło
Za pomocą czystego javascript można obsłużyć odwołanie do obiektu, który wywołał zdarzenie.
źródło
załóżmy, że musisz umieścić różne wiersze przycisków opcji w formularzu, każdy z osobnymi nazwami atrybutów („opcja1”, „opcja2” itp.), ale o tej samej nazwie klasy. Być może potrzebujesz ich w wielu wierszach, z których każdy poda wartość na podstawie skali od 1 do 5 dotyczącej pytania. możesz napisać javascript w następujący sposób:
Wstawiłbym również końcowy wynik do ukrytego elementu formularza, który należy przesłać wraz z formularzem.
źródło
źródło
Jeśli możliwe jest przypisanie identyfikatora do elementu formularza (), ten sposób można uznać za bezpieczny alternatywny sposób (szczególnie gdy nazwa elementu grupy radiowej nie jest unikalna w dokumencie):
HTML:
źródło
itd., a następnie użyj just
Lub
źródło
źródło