चयनित रेडियो बटन का मूल्य कैसे प्राप्त करें?


316

मैं रेडियो बटन के समूह से चयनित मूल्य प्राप्त करना चाहता हूं।

यहाँ मेरा 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;

मैं अपरिभाषित होता रहता हूं।


50
आप यहां jQuery का उपयोग नहीं कर रहे हैं, लेकिन यदि आप कभी भी चाहते हैं, तो आप इसका उपयोग कर सकते हैं:$("input[type='radio'][name='rate']:checked").val();
GJK

आप उस वस्तु का निरीक्षण क्यों नहीं कर सकते? वैसे भी आपको उपयोग करने की आवश्यकता है.checked
अमोल एम कुलकर्णी 16


मुझे यकीन नहीं है कि यह आवश्यक है या नहीं, लेकिन <form></form>कंटेनर में रेडियो बटन लगाना एक अच्छी आदत है ।
कामिल १

2
Js

जवाबों:


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

दरें तत्व एक है div, इसलिए इसका कोई मूल्य नहीं होगा। शायद यही वह जगह है जहां undefinedसे आ रहा है।

checkedसंपत्ति आपको बता देंगे तत्व का चयन किया गया है या नहीं:

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

229
Jquery में यह होगा$("input[name=rate]:checked").val()
कामरान अहमद

1
मुझे समझ नहीं आता, क्या एक ही आईडी के साथ दो तत्व हैं?
मज़ारज़ार

3
@ मज्जलार नहीं, हर रेडियो-बटन की अपनी आईडी होती है, लेकिन सभी का एक ही नाम होता है, जो उन्हें एक समूह में रखता है, इसलिए यदि आप एक का चयन करते हैं तो एक का चयन रद्द हो जाता है। कामरान अहमद जवाब के साथ आप यह जांच सकते हैं कि समूह में कौन से रेडियो बटन चुने गए हैं और केवल चयनित (चेक किए गए) का मूल्य प्राप्त कर सकते हैं।
ब्रोको

4
महदिव्यपनाह का कोड ऊपर (साथ [checked]) विशेषता (अर्थात प्रारंभिक अवस्था) के लिए दिखता है । आपको इसके बजाय उपयोग करना चाहिए :checked, जो संपत्ति (यानी वर्तमान स्थिति) की तलाश में है, और जो लगभग हमेशा वही है जो आप चाहते हैं।
ग्रास डबल

5
जावास्क्रिप्ट में यहdocument.querySelectorAll("input[name=rate]:checked")[0].value
विन्सेन्ट मैकनाब

519

यह IE9 और इसके बाद के संस्करण और अन्य सभी ब्राउज़रों में काम करता है।

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

13
निश्चित रूप से आपको जांचना होगा कि क्या क्वेरीसेलर नॉट रिटर्न देता है। यह मामला है अगर कोई रेडियो बटन की जाँच नहीं की जाती है।
रॉबर्ट

18
@ कामरान अहम्: आपका jQuery समाधान बहुत बड़ी लागत के साथ आता है।

5
पार्थिकगोसर: IE8 :checkedचयनकर्ता का समर्थन नहीं करता है ।

14
ध्यान दें कि आसपास के उद्धरण चिह्नों की rateआवश्यकता नहीं है।
mbomb007

1
@KamranAhmed जब तक और जब तक आप उपरोक्त प्रोफ़ाइल नहीं कर सकते और / या कॉल के पीछे कार्यान्वयन का निरीक्षण कर सकते हैं, आप ऊपर के प्रदर्शन के बारे में और कुछ नहीं कह सकते हैं क्योंकि आप किसी अन्य ऑन्लाइनर के बारे में कह सकते हैं जो मूल कोड को कॉल करता है। हमारे पास यह अनुमान लगाने के लिए पर्याप्त जानकारी नहीं है कि ब्राउज़र :checkedतत्व (एस) का पता लगाने का प्रबंधन कैसे करता है - शायद इसमें सब कुछ "हैशेड और कैश" है और यह एक O(1)ऑपरेशन है। जब तक आपने पृष्ठ पर तत्वों की संख्या के साथ क्वेरी समय बढ़ने के बारे में संकेत करने के लिए इसे प्रमाणित नहीं किया है, या जब तक आप इसके पीछे ब्राउज़र स्रोत कोड को नहीं समझते हैं, तब तक आप नहीं बता सकते।
19

144

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

13
यह देखते हुए कि केवल एक रेडियो को चेक किया जा सकता है, मैं सामान्य रूप से लूप के माध्यम से अतिरिक्त पास को रोकने के लिए ब्लॉक के अंदर breakया returnबयान की उम्मीद करूंगा if। एक छोटी सी बात, लेकिन अच्छी शैली।
रॉब

1
यह इस सवाल के लिए सबसे साफ वैनिला कार्यान्वयन है। कुडोस!
SeaWaryer404

37

आपके लिए किनारे पर रहने वाले लोग:

अब कुछ ऐसा है जिसे 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/

कृपया ध्यान दें कि यह फ़ायरफ़ॉक्स 33 में लागू किया गया था (अन्य सभी प्रमुख ब्राउज़र इसका समर्थन करते हैं)। पुराने ब्राउज़र RadioNodeListको ठीक से काम करने के लिए इसके लिए एक पॉलीफिल की आवश्यकता होगी


1
form.elements["test"].valueChrome [संस्करण 49.0.2623.87 m] में बहुत अच्छा काम करता है।
इवान हुआ

यह एक रूप होना चाहिए, उदाहरण के लिए एक div का उपयोग नहीं किया जा सकता है। अन्यथा यह एफएफ 71.0 में काम कर रहा है।
एंड्रयू

16

मेरे लिए काम किया गया नीचे api.jquery.com से दिया गया है।

एचटीएमएल

<input type="radio" name="option" value="o1">option1</input>
<input type="radio" name="option" value="o2">option2</input>

जावास्क्रिप्ट

var selectedOption = $("input:radio[name=option]:checked").val()

चर चयनितओओशन में चयनित रेडियो बटन (यानी) o1 या o2 का मान होगा


11

एक और (स्पष्ट रूप से पुराना) विकल्प प्रारूप का उपयोग करना है: "document.nameOfTheForm.nameOfTheInput.nue;" उदा। 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 में हालांकि एक फार्म तत्व नहीं है।

यहाँ फिडल (क्रोम और फ़ायरफ़ॉक्स में काम करता है): https://jsfiddle.net/Josh_Shields/23kg3tf4/1/


1
यह बहुत पुराना विरासत डोम प्रारूप है और वास्तव में इसका उपयोग नहीं किया जाना चाहिए क्योंकि यह कुछ तत्वों तक सीमित है और वर्तमान मानकों के साथ तालमेल नहीं रखता है।
j868691

@ j08691 आह ठीक है मुझे बताने के लिए धन्यवाद। यह उन चीजों में से एक है जो मैंने विश्वविद्यालय की कक्षा में सीखीं। यह बेहतर है कि वहां से किसी भी चीज पर भरोसा न करें और इसके बजाय केवल ऑनलाइन संदर्भ का उपयोग करें।
जेएचएस

6
"... मैं वर्तमान मानकों के साथ तालमेल नहीं रखता।" एक ठोस तर्क नहीं है। कृपया विस्तार से बताएं। अगर यह काम करता है तो यह काम करता है। यह स्वीकृत उत्तर की तुलना में भी कम लाइनें हैं जो केवल यह निर्धारित करती है कि चयनित विकल्प 'फिक्स्ड रेट' है या नहीं।
शून्य-और-

ऊपर दिए गए फ़ेल्ड सफारी ब्राउज़र (7.1.4) के साथ काम नहीं करते हैं। मान अपरिभाषित के रूप में दिखाता है, रेडियो बटन राज्यों को बदलने से यह प्रभावित नहीं होता है।
स्टुअर्ट आर। जेफरीज़

हां, यह एज ब्राउजर (40.15063.0.0) के साथ भी काम नहीं करता है। अगर वे इस तरह से पदावनत हुए, तो यह अजीब लगता है, क्योंकि यह तरीका सरल है और समझ में आता है क्योंकि रेडियो बटन उनके स्वभाव द्वारा समूहीकृत हैं। अधिकांश अन्य उत्तर ठीक वैसे ही दिखते हैं जैसे वे चेकबॉक्स चेक कर रहे होते हैं।
मिकतो

10

दस्तावेज़ का उपयोग करें ।erySelector ('इनपुट [प्रकार = रेडियो]: चेक किया गया')। मूल्य; चयनित चेकबॉक्स का मूल्य प्राप्त करने के लिए, आप अन्य विशेषताओं का उपयोग कर सकते हैं जैसे नाम = लिंग आदि प्राप्त करने के लिए कृपया स्निपेट के नीचे से गुजरें निश्चित रूप से यह आपके लिए उपयोगी होगा,

समाधान

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>

धन्यवाद


7

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"

5

जावास्क्रिप्ट में हम getElementById()आपके द्वारा पोस्ट किए गए उपरोक्त कोड में आईडी के " " का उपयोग करके मान प्राप्त कर सकते हैं, जिसमें आईडी नहीं है, ताकि आप इसे संशोधित कर सकें

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

अपने कोड के अनुसार इस rate_value का उपयोग करें


5

प्रश्न पूछे जाने के बाद एक वर्ष या उससे अधिक समय बीत चुका है, लेकिन मुझे लगा कि उत्तरों का पर्याप्त सुधार संभव है। मुझे यह सबसे आसान और सबसे बहुमुखी स्क्रिप्ट लगता है, क्योंकि यह जांचता है कि क्या एक बटन की जांच की गई है, और यदि हां, तो इसका मूल्य क्या है:

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

5

आपके फॉर्म एलिमेंट को myFormनीचे चर द्वारा संदर्भित किया गया है, और यह कि आपके रेडियो बटन "माय-रेडियो-बटन-ग्रुप-नेम" नाम साझा करते हैं, निम्नलिखित शुद्ध जावास्क्रिप्ट और मानकों के अनुरूप है (हालांकि मैंने इसे हर जगह उपलब्ध होने के लिए जाँच नहीं किया है ):

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

उपरोक्त एक चेक (या चयनित, जैसा कि इसे भी कहा जाता है) का मान प्राप्त करेगा , रेडियो बटन तत्व, यदि कोई हो, या nullअन्यथा। समाधान का क्रूक्स वह namedItemफ़ंक्शन है जो विशेष रूप से रेडियो बटन के साथ काम करता है।

देखें HTMLFormElement.elements , HTMLFormControlsCollection.namedItem और विशेष रूप से RadioNodeList.value , के रूप में namedItem आम तौर पर एक रिटर्न RadioNodeListवस्तु।

मैं एमडीएन का उपयोग करता हूं क्योंकि यह मानकों के अनुपालन को ट्रैक करने की अनुमति देता है, कम से कम एक बड़ी हद तक, और क्योंकि यह कई व्हाट्सएप और डब्ल्यू 3 सी प्रकाशनों की तुलना में आसान है।


जब मैंने उत्तर लिखा था तो मैंने मौजूदा उत्तरों के माध्यम से स्किम किया, और ऐसा कुछ भी नहीं देखा जो जैसा था वह साझा करना चाहता था। अब मैं देखता हूं कि मैं कम से कम दो समान समाधानों से चूक गया। यद्यपि, किसी ने भी मेरे द्वारा सुझाए गए विशेष वाक्यविन्यास का उपयोग करते हुए अपना कोड सुझाव नहीं लिखा, लेकिन सामान्य विचार समान है। FYI करें। बिंदु RadioNodeListकुछ के माध्यम से संदर्भ प्राप्त करना है जैसे ( form.elements[name]या form[name], शायद, एक अटकल) या मेरे उपरोक्त सिंटैक्स के माध्यम से।
एमएन

3

सीधे कई बार रेडियो बटन पर कॉल करने से आपको FIRST बटन का मूल्य मिल जाता है, न कि CHECKED बटन को। यह देखने के लिए कि किसी एक को चेक करने के लिए थ्रू रेडियो बटन को दबाने के बजाय, मैं एक onclickजावास्क्रिप्ट फ़ंक्शन को कॉल करना पसंद करता हूं जो एक चर सेट करता है जिसे बाद में इच्छा पर पुनः प्राप्त किया जा सकता है।

<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 बटन को सक्षम करने पर)।


5
onchangeउपयोगकर्ता को कीबोर्ड का उपयोग करने की स्थिति में, आपको इसके बजाय ईवेंट को बाइंड करना चाहिए ।
जॉन ड्वोरक

2

पिछले सुझाए गए कार्यों में सुधार:

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

2

शुद्ध जावास्क्रिप्ट के साथ इस समस्या पर मेरा ध्यान चेक नोड को ढूंढना है, इसके मूल्य को खोजना है और इसे सरणी से बाहर निकालना है।

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

ध्यान दें कि मैं तीर फ़ंक्शन का उपयोग कर रहा हूं । एक कार्यशील उदाहरण के लिए इस फिडेल को देखें ।


मैं tagName === 'INPUT'यह सुनिश्चित करने के लिए एक जांच जोड़ूंगा कि आप इसके अलावा किसी भी टैग पर काम नहीं कर रहे हैं input
अनटेरस


1

आप .find()चेक किए गए तत्व को चुनने के लिए उपयोग कर सकते हैं :

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

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

1
मैं Array.find को नहीं जानता था, इसे प्यार करता हूँ! लेकिन अगर किसी तत्व की जांच नहीं की जाती है तो यह टूट जाएगा।
पोंजी

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

क्या आप बता सकते हैं कि यह सवाल का जवाब कैसे देता है?
लगता है

" रेडियो बटन के एक समूह से चयनित मूल्य प्राप्त करें ": rates.rate.valueनहींrates.value
user7420100

यह एक सही उत्तर है। document.getElementById("rates").rate.value[या]document.forms[0].rate.value
एटिका


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

आशा है ये मदद करेगा।


0

यदि बटन
var myform = new FormData(getformbywhatever); myform.get("rate");
ऊपर एक फॉर्म में हैं तो QuerySelector एक बेहतर उपाय है। हालाँकि, इस विधि को समझना आसान है, खासकर यदि आपके पास सीएसएस के बारे में कोई सुराग नहीं है। साथ ही, इनपुट फ़ील्ड वैसे भी एक रूप में होने की काफी संभावना है।
जाँच नहीं की, पुनरावृत्ति के लिए खेद है, इसी तरह के अन्य समाधान हैं


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

इसके बदले रेडियो बटन का मान नहीं मिल सकता

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

HTML टैग के उपयोग के मान प्राप्त करने के लिए document.getElementById ('r1')। InnerHtml
James Cluade

0

यदि आप उपयोग कर रहे हैं JQuery, तो कृपया रेडियो बटनों के समूह के लिए bellow स्निपेट का उपयोग करें।

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

0

बस उपयोग करें: document.querySelector('input[rate][checked]').value


मेरे लिए काम नहीं किया; पवन से ऊपर एक समान वाक्य-विन्यास देखें। जैसे,document.querySelector('input[name = rate]:checked').value
टिम एरिकसन

0

   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>


0

आप तत्वों पर एक फॉर्च-लूप के साथ बटन के माध्यम से भी लूप कर सकते हैं

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

-1

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>

जेएस

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

-2

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/>
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.