Как получить значение выбранного переключателя?

Я хочу получить выбранное значение из группы переключателей.

Вот мой 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">