Как получить значение выбранного переключателя?
Я хочу получить выбранное значение из группы переключателей.
Вот мой 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>
Вот мой .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;
Я продолжаю становиться неопределенным.
Ответы
Ответ 1
var rates = document.getElementById('rates').value;
Элемент ставок является div
, поэтому он не будет иметь значения. Вероятно, это происходит из undefined
.
Свойство checked
сообщит вам, выбран ли элемент:
if (document.getElementById('r1').checked) {
rate_value = document.getElementById('r1').value;
}
Ответ 2
Это работает в IE9 и выше и во всех других браузерах.
document.querySelector('input[name="rate"]:checked').value;
Ответ 3
Вы можете получить значение с помощью свойства checked
.
var rates = document.getElementsByName('rate');
var rate_value;
for(var i = 0; i < rates.length; i++){
if(rates[i].checked){
rate_value = rates[i].value;
}
}
Ответ 4
Для вас люди, живущие на краю:
Теперь есть что-то, называемое RadioNodeList, и доступ к его значению свойства возвращает значение текущего проверенного ввода. Это устранит необходимость сначала отфильтровать "проверенный" ввод, как мы видим во многих опубликованных ответах.
Пример формы
<form id="test">
<label><input type="radio" name="test" value="A"> A</label>
<label><input type="radio" name="test" value="B" checked> B</label>
<label><input type="radio" name="test" value="C"> C</label>
</form>
Чтобы получить проверенное значение, вы можете сделать что-то вроде этого:
var form = document.getElementById("test");
alert(form.elements["test"].value);
JSFiddle, чтобы это доказать: http://jsfiddle.net/vjop5xtq/
Обратите внимание, что это было реализовано в Firefox 33 (все остальные крупные браузеры, похоже, поддерживают его). Для более старых браузеров для RadioNodeList
требуется использовать polfyill для правильной работы
Ответ 5
Другой (видимо, более старый) вариант - использовать формат: "document.nameOfTheForm.nameOfTheInput.value;" например, document.mainForm.rads.value;
document.mainForm.onclick = function(){
var radVal = document.mainForm.rads.value;
result.innerHTML = 'You selected: '+radVal;
}
<form id="mainForm" name="mainForm">
<input type="radio" name="rads" value="1" />
<input type="radio" name="rads" value="2" />
<input type="radio" name="rads" value="3" />
<input type="radio" name="rads" value="4" />
</form>
<span id="result"></span>
Ответ 6
Тот, который работал у меня, приведен ниже с api.jquery.com.
HTML
<input type="radio" name="option" value="o1">option1</input>
<input type="radio" name="option" value="o2">option2</input>
JavaScript
var selectedOption = $("input:radio[name=option]:checked").val()
Переменная selectedOption будет содержать значение выбранного переключателя (i.e) o1 или o2
Ответ 7
Используйте document.querySelector('input [type = radio]: checked'). value;, чтобы получить значение выбранного флажка, вы можете использовать другие атрибуты для получения значения типа name = пол и т.д., пожалуйста, пройдите ниже фрагмента, определенно, это поможет вам,
Решение
document.mainForm.onclick = function(){
var gender = document.querySelector('input[name = gender]:checked').value;
result.innerHTML = 'You Gender: '+gender;
}
<form id="mainForm" name="mainForm">
<input type="radio" name="gender" value="Male" checked/>Male
<input type="radio" name="gender" value="Female" />Female
<input type="radio" name="gender" value="Others" />Others
</form>
<span id="result"></span>
Ответ 8
В Javascript мы можем получить значения с помощью Id " getElementById()
" в вышеприведенном коде, который вы указали, содержит имя not Id
поэтому вы должны изменить это как
if (document.getElementById('r1').checked) {
rate_value = document.getElementById('r1').value;
}
используйте значение rate_value в соответствии с вашим кодом
Ответ 9
Прошел год или около того с тех пор, как был задан вопрос, но я подумал, что было возможно существенное улучшение ответов. Я нахожу это самым простым и универсальным script, потому что он проверяет, была ли отмечена кнопка, и если да, то каково ее значение:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Check radio checked and its value</title>
</head>
<body>
<form name="theFormName">
<input type="radio" name="theRadioGroupName" value="10">
<input type="radio" name="theRadioGroupName" value="20">
<input type="radio" name="theRadioGroupName" value="30">
<input type="radio" name="theRadioGroupName" value="40">
<input type="button" value="Check" onclick="getRadioValue('theRadioGroupName')">
</form>
<script>
function getRadioValue(groupName) {
var radios = theFormName.elements[groupName];
window.rdValue; // declares the global variable 'rdValue'
for (var i=0; i<radios.length; i++) {
var someRadio = radios[i];
if (someRadio.checked) {
rdValue = someRadio.value;
break;
}
else rdValue = 'noRadioChecked';
}
if (rdValue == '10') {
alert('10'); // or: console.log('10')
}
else if (rdValue == 'noRadioChecked') {
alert('no radio checked');
}
}
</script>
</body>
</html>
Вы также можете вызвать функцию в другой функции, например:
function doSomething() {
getRadioValue('theRadioGroupName');
if (rdValue == '10') {
// do something
}
else if (rdValue == 'noRadioChecked') {
// do something else
}
}
Ответ 10
Предполагая, что на ваш элемент формы ссылается переменная myForm
ниже, и что ваши радиокнопки имеют имя "my-radio-button-group-name", ниже приведен чистый JavaScript и соответствует стандартам (хотя я не проверял, чтобы он был доступен везде):
myForm.elements.namedItem("my-radio-button-group-name").value
Вышеприведенное приведет к значению отмеченного (или выбранного, как его еще называют) элемента переключателя, если он есть, или null
противном случае. Суть решения - функция namedItem
которая работает именно с переключателями.
См. HTMLFormElement.elements, HTMLFormControlsCollection.namedItem и особенно RadioNodeList.value, поскольку namedItem
обычно возвращает объект RadioNodeList
.
Я использую MDN, потому что он позволяет отслеживать соответствие стандартам, по крайней мере, в значительной степени, и потому что его легче понять, чем многие публикации WhatWG и W3C.
Ответ 11
HTML-код:
<input type="radio" name="rdoName" value="YES"/> <input type="radio" name="rdoName" value="NO"/>
КОД JQUERY:
var value= $("input:radio[name=rdoName]:checked").val();
$("#btnSubmit").click(function(){
var value=$("input:radio[name=rdoName]:checked").val();
console.log(value);
alert(value);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="rdoName" value="YES"/> YES
<input type="radio" name="rdoName" value="NO"/> NO
<br/>
<input type="button"id="btnSubmit"value="Which one Selected"/>
Ответ 12
Прямой вызов радиокнопки многократно дает вам значение кнопки FIRST, а не кнопки CHECKED. вместо того, чтобы перебирать радиокнопки, чтобы увидеть, какой из них отмечен, я предпочитаю вызывать функцию onclick
javascript, которая устанавливает переменную, которая впоследствии может быть восстановлена по желанию.
<input type="radio" onclick="handleClick(this)" name="reportContent" id="reportContent" value="/reportFleet.php" >
который вызывает:
var currentValue = 0;
function handleClick(myRadio) {
currentValue = myRadio.value;
document.getElementById("buttonSubmit").disabled = false;
}
дополнительным преимуществом является то, что я могу обрабатывать данные и/или реагировать на проверку кнопки (в этом случае можно включить кнопку SUBMIT).
Ответ 13
Улучшение предыдущих предлагаемых функций:
function getRadioValue(groupName) {
var _result;
try {
var o_radio_group = document.getElementsByName(groupName);
for (var a = 0; a < o_radio_group.length; a++) {
if (o_radio_group[a].checked) {
_result = o_radio_group[a].value;
break;
}
}
} catch (e) { }
return _result;
}
Ответ 14
Моя проблема с чистым javascript заключается в том, чтобы найти проверочный node, найти его значение и вытащить его из массива.
var Anodes = document.getElementsByName('A'),
AValue = Array.from(Anodes)
.filter(node => node.checked)
.map(node => node.value)
.pop();
console.log(AValue);
Обратите внимание, что я использую функции стрелок.
См. fiddle для рабочего примера.
Ответ 15
Если вы используете jQuery:
$('input[name="rate"]:checked').val();
Ответ 16
Вы можете использовать .find()
для выбора отмеченного элемента:
var radio = Array.from(document.querySelectorAll('#rate input'))
var value = radio.length && radio.find(r => r.checked).value
Ответ 17
<form id="rates">
<input type="radio" name="rate" value="Fixed Rate"> Fixed
<input type="radio" name="rate" value="Variable Rate"> Variable
<input type="radio" name="rate" value="Multi Rate" checked> Multi
</form>
то...
var rate_value = rates.rate.value;
Ответ 18
проверить значение по ID:
var CheckedValues = ($("#r1").is(':checked')) ? 1 : 0;
Ответ 19
Я использовал функцию jQuery.click для получения желаемого результата:
$('input[name=rate]').click(function(){
console.log('Hey you clicked this: ' + this.value);
if(this.value == 'Fixed Rate'){
rate_value = $('#r1').value;
} else if(this.value =='Variable Rate'){
rate_value = $('#r2').value;
} else if(this.value =='Multi Rate'){
rate_value = $('#r3').value;
}
$('#results').innerHTML = rate_value;
});
Надеюсь, что это поможет.
Ответ 20
Если кнопки находятся в форме
var myform = new FormData(getformbywhatever);
myform.get("rate");
QuerySelector выше - лучшее решение. Однако этот метод легко понять, особенно если у вас нет подсказки о CSS. Плюс, поля ввода, скорее всего, будут в форме.
Не проверял, есть и другие подобные решения, извините за повторение
Ответ 21
var rates = document.getElementById('rates').value;
не может получить значения этого переключателя, а вместо этого используйте
rate_value = document.getElementById('r1').value;
Ответ 22
Если вы используете JQuery
, воспользуйтесь приведенным ниже фрагментом для группы переключателей.
var radioBtValue= $('input[type=radio][name=radiobt]:checked').val();
Ответ 23
Просто используйте: document.querySelector('input[rate][checked]').value
Ответ 24
Это может помочь:
document.querySelector('input[type=radio][name=xyz]:checked').value;
Ответ 25
var rates=document.getElementsByName("rate");
for (i = 0; i < rates.length; i++) {
if (rates[i].checked) {
console.log(rates[i].value);
rate=rates[i].value;
document.getElementById("rate").innerHTML = rate;
alert(rate);
}
}
<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>
</br>
<div id='rate'>
</div>
Ответ 26
Hy, я пытался сделать каждый пример здесь, но ни один из них не работает... это мой код:
function sumvalnotset(modelbtn){
var model;
for (var i = 0; i < modelbtn.length; i++){
if(modelbtn[i].checked){
model = modelbtn[i].value;
break;
}
}
var p = document.getElementById("sumvalnotset");
p.innerHTML = "the value is " + model
}
<div>
<p>Select:</p>
<input class="modelbtn" name="genoptradio1" type="radio" value="22,8" onclick="sumvalnotset('genoptradio1')">example1
<input class="modelbtn" name="genoptradio1" type="radio" value="29,6" onclick="sumvalnotset('genoptradio1')">example2
<input class="modelbtn" name="genoptradio1" type="radio" value="34,2" onclick="sumvalnotset('genoptradio1')">example3
<input class="modelbtn" name="genoptradio1" type="radio" value="31,2" onclick="sumvalnotset('genoptradio1')">example4
</div>
<p id="sumvalnotset">the value is 0</p>
Ответ 27
document.querySelector('input[name = gender]:checked').value
Вышеупомянутый код JQuery очень прост, но он немного дороже, чем простой код JavaScript, упомянутый ниже.
var rateList = document.getElementByName('rate');
for(var i = 0,len = rateList.length ; i < len ; i++) {
if(rateList[i].checked) {
value = rateList[i].value
}
}
вы можете обернуть его как обычную функцию и использовать где угодно, просто указав имя входа.
Ответ 28
https://codepen.io/anon/pen/YQxbZJ
HTML
<div id="rates">
<input type="radio" id="x1" name="rate" value="Fixed Rate"> Fixed Rate
<input type="radio" id="x2" name="rate" value="Variable Rate"
checked="checked"> Variable Rate
<input type="radio" id="x3" name="rate" value="Multi Rate" > Multi Rate
</div>
<button id="rdio"> Check Radio </button>
<div id="check">
</div>
JS
var x ,y;
var x = document.getElementById("check");
function boom()
{
if (document.getElementById("x1").checked)
y = document.getElementById("x1").value;
else if(document.getElementById("x2").checked)
y = document.getElementById("x2").value;
else if (document.getElementById("x3").checked)
y = document.getElementById("x3").value;
else
y = "kuch nhi;"
x.innerHTML = y;
}
var z = document.getElementById('rdio');
z.addEventListener("click", boom);`
Ответ 29
В php это очень просто
HTML-страница
Male<input type="radio" name="radio" value="male"><br/>
Female<input type="radio" name="radio" value="female"><br/>
Others<input type="radio" name="radio" value="other"><br/>
<input type="submit" value="submit">