簡體   English   中英

如何獲取選定單選按鈕的值?

[英]How to get value of selected radio button?

我想從一組單選按鈕中獲取選定的值。

這是我的 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;

我一直不確定。

這適用於 IE9 及更高版本以及所有其他瀏覽器。

document.querySelector('input[name="rate"]:checked').value;
var rates = document.getElementById('rates').value;

rate 元素是一個div ,因此它沒有值。 這可能是undefined的來源。

checked屬性會告訴你元素是否被選中:

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}

或者

$("input[type='radio'][name='rate']:checked").val();

您可以使用checked<\/code>屬性獲取值。

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;
    }
}

對於生活在邊緣的人們:

現在有一個叫做RadioNodeList 的東西,訪問它的 value 屬性將返回當前檢查的輸入的值。 正如我們在許多發布的答案中看到的那樣,這將消除首先過濾掉“已檢查”輸入的必要性。

示例表格

<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 的RadioNodeList才能正常運行

下面從 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 將包含所選單選按鈕的值(即)o1 或 o2

另一個(顯然較舊)選項是使用格式:“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>

您可以在表單中通過其名稱來引用元素。 但是,您的原始 HTML 不包含表單元素。

在這里小提琴(在 Chrome 和 Firefox 中工作): https : //jsfiddle.net/Josh_Shields/23kg3tf4/1/

使用document.querySelector('input[type = radio]:checked').value; 要獲取選定復選框的值,您可以使用其他屬性來獲取值,例如名稱 = 性別等。請仔細閱讀下面的代碼段,這肯定會對您有所幫助,

解決方案

 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>

謝謝

HTML 代碼:

<input type="radio" name="rdoName" value="YES"/> <input type="radio" name="rdoName" value="NO"/>

查詢代碼:

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"/>

你會得到

value="YES" //if checked Radio Button with the value "YES"
value="NO" //if checked Radio Button with the value "NO"

在Javascript中,我們可以通過在您發布的上述代碼中使用Id的“ getElementById() ”來獲取值,其中包含名稱而不是Id,因此您可以像這樣修改

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}

根據您的代碼使用此 rate_value

自從提出這個問題以來已經過去了一年左右,但我認為答案的實質性改進是可能的。 我發現這是最簡單和最通用的腳本,因為它會檢查按鈕是否被選中,如果是,它的值是什么:

<!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
    }  
} 

假設您的表單元素由下面的myForm變量引用,並且您的單選按鈕共享名稱“my-radio-button-group-name”,以下是純 JavaScript 和標准兼容(盡管我沒有檢查它是否可用到處):

myForm.elements.namedItem("my-radio-button-group-name").value

以上將產生一個選中的(或選擇的,因為它也被稱為)單選按鈕元素的值,如果有的話,否則為null 解決方案的關鍵是namedItem函數,它專門用於單選按鈕。

請參閱HTMLFormElement.elementsHTMLFormControlsCollection.namedItem ,尤其是RadioNodeList.value ,因為namedItem通常返回RadioNodeList對象。

我使用 MDN 是因為它允許人們至少在很大程度上跟蹤標准合規性,並且因為它比許多 WhatWG 和 W3C 出版物更容易理解。

最短的

[...rates.children].find(c=>c.checked).value

 let v= [...rates.children].find(c=>c.checked).value console.log(v);
 <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>

多次直接調用單選按鈕會為您提供 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; 
}

另一個優點是我可以處理數據和/或對按鈕的檢查做出反應(在這種情況下,啟用提交按鈕)。

您還可以在元素上使用 forEach 循環遍歷按鈕

    var elements = document.getElementsByName('radioButton');
    var checkedButton;
    console.log(elements);
    elements.forEach(e => {
        if (e.checked) {
            //if radio button is checked, set sort style
            checkedButton = e.value;
        }
    });

對先前建議功能的改進:

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;
}

您可以使用.find()選擇選中的元素:

var radio = Array.from(document.querySelectorAll('#rate input'))

var value = radio.length && radio.find(r => r.checked).value

我對純 javascript 的這個問題的看法是找到選中的節點,找到它的值並將其從數組中彈出。

var Anodes = document.getElementsByName('A'),
    AValue = Array.from(Anodes)
       .filter(node => node.checked)
       .map(node => node.value)
       .pop();
console.log(AValue);

請注意,我使用的是箭頭函數 請參閱此小提琴以獲取工作示例。

如果您使用的是 jQuery:

$('input[name="rate"]:checked').val();

如果你使用沒有 jQuery 的 javascript,你可以使用這個命令:

document.querySelector(`input[type="radio"][name=rate]:checked`).value
<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;

按 ID 檢查值:

var CheckedValues = ($("#r1").is(':checked')) ? 1 : 0;

我使用 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;
});

希望能幫助到你。

如果按鈕在表單中
var myform = new FormData(getformbywhatever); myform.get("rate");
上面的 QuerySelector 是一個更好的解決方案。 但是,這種方法很容易理解,尤其是在您對 CSS 沒有任何了解的情況下。 另外,輸入字段很可能無論如何都在表單中。
沒查,還有其他類似的解決方法,抱歉重復

var rates = document.getElementById('rates').value;

無法獲得這樣的單選按鈕的值,而是使用

rate_value = document.getElementById('r1').value;

如果您使用的是JQuery ,請使用下面的代碼段作為單選按鈕組。

var radioBtValue= $('input[type=radio][name=radiobt]:checked').val();

只需使用: document.querySelector('input[rate][checked]').value

這是一個將單選按鈕置於常量中並僅在需要時獲取所選值的解決方案。

 const rates = document.forms.rates.elements["rate"] showRate() function showRate(){ document.getElementById('results').innerHTML = rates.value }
 <form id="rates" onchange="showRate()"> <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 </form> <div id="results"></div>

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);`

 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>

在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">

從表單獲取價值到 php

$radio=$_POST['radio'];<br/>
use php if(isset($_POST['submit']))<br/>
{<br/>
echo "you selected".$radio."thank u";<br/>
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM