html एक समूह में केवल एक चेकबॉक्स का चयन करता है


125

तो मैं केवल एक उपयोगकर्ता को केवल एक चेकबॉक्स कैसे चुन सकता हूं?

मुझे पता है कि रेडियो बटन "आदर्श" हैं, लेकिन मेरे उद्देश्य के लिए ... यह नहीं है।

मेरे पास एक ऐसा क्षेत्र है जहां उपयोगकर्ताओं को या तो दो विकल्पों में से एक का चयन करने की आवश्यकता है, लेकिन दोनों नहीं। समस्या यह है कि मुझे अपने उपयोगकर्ताओं को अपने विकल्प को अचयनित करने में भी सक्षम होना चाहिए, और यह वह जगह है जहाँ रेडियो बटन विफल हो जाते हैं क्योंकि एक बार जब आप समूह का चयन करते हैं, तो आपको एक विकल्प चुनना होगा।

मैं php के माध्यम से जानकारी को मान्य कर रहा हूँ, लेकिन मैं अभी भी उपयोगकर्ताओं को एक उत्तर में प्रतिबंधित करना चाहूँगा यदि वे इसे देना चाहते हैं।


1
केवल HTML के साथ, यह नहीं किया जा सकता है। आपको जावास्क्रिप्ट की आवश्यकता होगी। यदि आप jQuery के लिए खुले हैं, तो मैं आपको एक त्वरित समाधान दे सकता हूं।
असली सपने

12
"कोई नहीं" लेबल वाले अतिरिक्त रेडियो बटन के बारे में क्या?
फेलिपएल्स 19

2
एक 3 विकल्प मेरे डिजाइन के साथ अच्छी तरह से नहीं जाता है ... अच्छा विकल्प हालांकि :)
user962449

2
एकल पसंद वाला चेकबॉक्स वास्तव में एक रेडियो-बटन है। क्या यह आश्चर्यचकित नहीं करेगा?
घुमारवीं

@ असली सपने यह HTML में किया जा सकता है, मेरा जवाब देखें। हालांकि ज्यादातर मामलों में, वह JS सरल है और हैक की कोई आवश्यकता नहीं है।
सामूगुडी

जवाबों:


179

यह स्निपेट होगा:

  • रेडियो बटन की तरह समूहीकरण की अनुमति दें
  • रेडियो की तरह कार्य करें
  • सभी को अनदेखा करने की अनुमति दें

// the selector will match all input controls of type :checkbox
// and attach a click event handler 
$("input:checkbox").on('click', function() {
  // in the handler, 'this' refers to the box clicked on
  var $box = $(this);
  if ($box.is(":checked")) {
    // the name of the box is retrieved using the .attr() method
    // as it is assumed and expected to be immutable
    var group = "input:checkbox[name='" + $box.attr("name") + "']";
    // the checked state of the group/box on the other hand will change
    // and the current value is retrieved using .prop() method
    $(group).prop("checked", false);
    $box.prop("checked", true);
  } else {
    $box.prop("checked", false);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<div>
  <h3>Fruits</h3>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Kiwi</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Jackfruit</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Mango</label>
</div>
<div>
  <h3>Animals</h3>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Tiger</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Sloth</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Cheetah</label>
</div>


3
सही उपयोग $ (यह) .is (": check") "the" करने के लिए होगा कि क्या चेकबॉक्स चेक किया जा रहा है अगर {{}} और {...} यहां ... jsfiddle .net / zGEaa / 31
सर्जियोढ़

2
ध्यान दें कि .attr अब काम नहीं कर रहा है, jQuery के नए संस्करणों के बजाय .prop ("चेक किया गया") का उपयोग करें
user871784

@ user871784 - हेड-अप के लिए धन्यवाद ... मैंने फिडेल को अपडेट किया है!
bPratik

3
आपने रेडियो चयनकर्ता को याद किया: $ ("इनपुट: चेकबॉक्स। ब्रैडियो")
स्वेन

@Sven - यह इस उदाहरण में एक अति विशिष्ट चयनकर्ता होगा। यह कहने के बाद कि यदि पृष्ठ में चेकबॉक्स का एक और सेट है जिसमें यह व्यवहार नहीं होना चाहिए, तो .radioचयनकर्ता का उपयोग करने में मदद मिलेगी। इसे इंगित करने के लिए धन्यवाद :)
bPratik

101

आप एक change()हैंडलर को बांधना चाहते हैं ताकि चेकबॉक्स की स्थिति में परिवर्तन होने पर घटना में आग लग जाए। फिर, हैंडलर को ट्रिगर करने वाले के अलावा सभी चेकबॉक्सों को अचयनित करें:

$('input[type="checkbox"]').on('change', function() {
   $('input[type="checkbox"]').not(this).prop('checked', false);
});

यहाँ एक बेला है


समूहीकरण के लिए, यदि आपका चेकबॉक्स "समूह" सभी भाई-बहन थे:

<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>  
<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>   
<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>

आप ऐसा कर सकते हैं:

$('input[type="checkbox"]').on('change', function() {
   $(this).siblings('input[type="checkbox"]').prop('checked', false);
});

यहाँ एक और बेला है


यदि आपके चेकबॉक्स को किसी अन्य विशेषता द्वारा वर्गीकृत किया गया है, जैसे name:

<input type="checkbox" name="group1[]" />
<input type="checkbox" name="group1[]" />
<input type="checkbox" name="group1[]" />

<input type="checkbox" name="group2[]" />
<input type="checkbox" name="group2[]" />
<input type="checkbox" name="group2[]" />

<input type="checkbox" name="group3[]" />
<input type="checkbox" name="group3[]" />
<input type="checkbox" name="group3[]" />

आप ऐसा कर सकते हैं:

$('input[type="checkbox"]').on('change', function() {
    $('input[name="' + this.name + '"]').not(this).prop('checked', false);
});

यहाँ एक और बेला है


मुझे आपका (अंतिम) कोड पसंद है। बहुत छोटा और अभी भी स्पष्ट है। मुझे यकीन नहीं था कि यदि आप अन्य चेकबॉक्सों को बदलते हैं तो 'परिवर्तन' पर आग लग जाएगी, लेकिन जब मैंने कोशिश की तो यह नहीं हुआ। इसलिए मैं आपका कोड पसंद करता हूं। धन्यवाद! :)
फ्रैंक फाजार्डो

मुझे वास्तव में यह पसंद है, मुझे अपनी ज़रूरत के लिए एक मामूली ट्विस्ट करना है। मेरे पास दो आइटम हैं, इसलिए पहला आइटम डिफ़ॉल्ट रूप से चेक किया गया है और यदि उसका अनियंत्रित दूसरा आइटम चेक किया गया है। इससे मुझे शुरुआत करने में मदद मिली।
जॉन.व्लैंड

हाय @ john.weland - क्या आपका मतलब कुछ इस तरह है ?
बिलियोनकेन

@ बिलियोनकैन लगभग बिल्कुल लेकिन एक दिए गए समूह को लक्षित करने की क्षमता के साथ। इस तरह । धन्यवाद
john.weland

2
सादगी के लिए एक प्लस
चाड

26

रेडियो बटन आदर्श हैं। आपको बस एक "न तो" विकल्प की आवश्यकता है जो डिफ़ॉल्ट रूप से चुनें।


1
यह एक अच्छा समाधान है, लेकिन मैं चेकबॉक्स के साथ रहना चाहता हूं क्योंकि मेरा डिजाइन एक 3 विकल्प के लिए आदर्श नहीं है।
user962449

6
मैं दृढ़ता से डिजाइन बदलने का सुझाव दूंगा। इन 2 विकल्पों में से टिक 0 या 1 एक सामान्य पैटर्न नहीं है और इन 3 विकल्पों
क्वेंटिन

4
मैं 2 चेकबॉक्स के लिए अपना पूरा डिज़ाइन क्यों बदलूंगा?
user962449

9
अगर इस तरह के बदलाव के लिए आपको "अपने पूरे डिज़ाइन" को बदलना होगा, तो यह बताता है कि डिज़ाइन पहले स्थान पर बहुत अधिक अनम्य है।
क्वेंटिन

10
यह अनम्य नहीं है, यह सिर्फ सही नहीं लगता है ... यह रूपों और ऐसे अनुप्रयोगों पर ठीक लग सकता है, लेकिन हमारे चेकबॉक्स के लिए हमारे पास अलग-अलग उपयोग हैं।
user962449

13

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

यहाँ नाम टैग (रेडियो बटन के साथ) और जावास्क्रिप्ट की कुछ पंक्तियों का उपयोग करने पर आधारित मेरा समाधान है।

function onlyOne(checkbox) {
    var checkboxes = document.getElementsByName('check')
    checkboxes.forEach((item) => {
        if (item !== checkbox) item.checked = false
    })
}
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">


धन्यवाद, इसने उन सभी लोगों से मेरे लिए यह किया =)
काया

6
$("#myform input:checkbox").change(function() {
    $("#myform input:checkbox").attr("checked", false);
    $(this).attr("checked", true);
});

यह फॉर्म में किसी भी संख्या में चेकबॉक्स के लिए काम करना चाहिए। यदि आपके पास अन्य हैं जो समूह का हिस्सा नहीं हैं, तो चयनकर्ताओं को लागू इनपुट सेट करें।


हां सर :) यह ठीक है, मुझे कुछ ऐसा मिला जो मेरे लिए काम करता है, हालांकि आपका समाधान बहुत सरल लगता है। मैंने शायद अपने अंत में कुछ गलत किया। फिर भी धन्यवाद।
user962449

5

यहाँ एक सरल HTML और जावास्क्रिप्ट समाधान है जो मुझे पसंद है:

// js फ़ंक्शन एक समय में केवल एक कार्यदिवस चेकबॉक्स की जाँच करने की अनुमति देता है:

function checkOnlyOne(b){

var x = document.getElementsByClassName('daychecks');
var i;

for (i = 0; i < x.length; i++) {
  if(x[i].value != b) x[i].checked = false;
}
}


Day of the week:
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Monday" />Mon&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Tuesday" />Tue&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Wednesday" />Wed&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Thursday" />Thu&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Friday" />Fri&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Saturday" />Sat&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Sunday" />Sun&nbsp;&nbsp;&nbsp;<br /><br />

4

यह कोड आपकी मदद करता है।

$(document).ready(function(){
$('.slectOne').on('change', function() {
   $('.slectOne').not(this).prop('checked', false);
   $('#result').html($(this).data( "id" ));
   if($(this).is(":checked"))
   	$('#result').html($(this).data( "id" ));
   else
   	$('#result').html('Empty...!');
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

</head>
<body>
<input type="checkbox" class="slectOne" data-id="1 selected"/>
<input type="checkbox" class="slectOne" data-id="2 selected"/>
<input type="checkbox" class="slectOne" data-id="3 selected"/>
<input type="checkbox" class="slectOne" data-id="4 selected"/>
<input type="checkbox" class="slectOne" data-id="5 selected"/>
<input type="checkbox" class="slectOne" data-id="6 selected"/>
<input type="checkbox" class="slectOne" data-id="7 selected"/>
<input type="checkbox" class="slectOne" data-id="8 selected"/>
<input type="checkbox" class="slectOne" data-id="9 selected"/>
<input type="checkbox" class="slectOne" data-id="10 selected"/>
<span id="result"></span>
</body>
</html>

कार्य लिंक यहाँ क्लिक करें


3

बिलियोनकेन के उत्तर पर निर्माण , आप निम्न कोड का उपयोग कर सकते हैं यदि आपको एक से अधिक चेकबॉक्स के लिए उस स्निपेट की आवश्यकता है (यह मानते हुए कि उनके पास अलग-अलग नाम हैं)।

    $('input.one').on('change', function() {
        var name = $(this).attr('name');
        $('input[name='+name+'].one').not(this).prop('checked', false);
    }); 

3

जबकि JS शायद जाने का रास्ता है, यह केवल HTML और CSS के साथ किया जा सकता है।

यहां आपके पास एक नकली रेडियो बटन है जो वास्तव में एक वास्तविक छिपे हुए रेडियो बटन के लिए एक लेबल है। ऐसा करने से आपको ठीक वैसा ही असर मिलता है, जैसा आपको चाहिए।

<style>
   #uncheck>input { display: none }
   input:checked + label { display: none }
   input:not(:checked) + label + label{ display: none } 
</style>

<div id='uncheck'>
  <input type="radio" name='food' id="box1" /> 
  Pizza 
    <label for='box1'>&#9678;</label> 
    <label for='box0'>&#9673;</label>
  <input type="radio" name='food' id="box2" /> 
  Ice cream 
    <label for='box2'>&#9678;</label> 
    <label for='box0'>&#9673;</label>
  <input type="radio" name='food' id="box0" checked />
</div>

इसे यहां देखें: https://jsfiddle.net/tn70yxL8/2/

अब, यह मानता है कि आपको गैर-चयन योग्य लेबल की आवश्यकता है।

यदि आप लेबल को शामिल करने के लिए तैयार थे, तो आप तकनीकी रूप से सीएसएस में अपना पाठ बदलकर "अनचेक" लेबल को दोहराने से बच सकते हैं, यहाँ देखें: https://jsfiddle.net/7tdb6quy/2/


1

AngularJs के साथ उदाहरण

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
  <script>
    angular.module('app', []).controller('appc', ['$scope',
      function($scope) {
        $scope.selected = 'other';
      }
    ]);
  </script>
</head>

<body ng-app="app" ng-controller="appc">
  <label>SELECTED: {{selected}}</label>
  <div>
    <input type="checkbox" ng-checked="selected=='male'" ng-true-value="'male'" ng-model="selected">Male
    <br>
    <input type="checkbox" ng-checked="selected=='female'" ng-true-value="'female'" ng-model="selected">Female
    <br>
    <input type="checkbox" ng-checked="selected=='other'" ng-true-value="'other'" ng-model="selected">Other
  </div>



</body>

</html>


1

सादे पुराने जावास्क्रिप्ट के साथ।

<html>
<head>
</head>
<body>
<input type="checkbox" name="group1[]" id="groupname1" onClick="toggle(1,'groupname')"/>
<input type="checkbox" name="group1[]" id="groupname2" onClick="toggle(2,'groupname')"  />
<input type="checkbox" name="group1[]" id="groupname3" onClick="toggle(3,'groupname')" />

<input type="checkbox" name="group2[]" id="diffGroupname1" onClick="toggle(1,'diffGroupname')"/>
<input type="checkbox" name="group2[]" id="diffGroupname2" onClick="toggle(2,'diffGroupname')"  />
<input type="checkbox" name="group2[]" id="diffGroupname3" onClick="toggle(3,'diffGroupname')" />
<script>
function toggle(which,group){
var counter=1;
var checkbox=document.getElementById(group+counter);
while(checkbox){
if(counter==which){

}else{
checkbox.checked=false;
}
counter++;
checkbox=document.getElementById(group+counter);
}
}
</script>
</body>
</html>

संपादित करें: यह भी संभव है

<html>
<head>
</head>
<body>
<input type="checkbox" name="group1[]" class="groupname" onClick="toggle(this,'groupname')"/>
<input type="checkbox" name="group1[]" class="groupname" onClick="toggle(this,'groupname')"  />
<input type="checkbox" name="group1[]" class="groupname" onClick="toggle(this,'groupname')" />

<input type="checkbox" name="group2[]" class="diffGroupname" onClick="toggle(this,'diffGroupname')"/>
<input type="checkbox" name="group2[]" class="diffGroupname" onClick="toggle(this,'diffGroupname')"  />
<input type="checkbox" name="group2[]" class="diffGroupname" onClick="toggle(this,'diffGroupname')" />
<script>
function toggle(which,theClass){
var checkbox=document.getElementsByClassName(theClass);
for(var i=0;i<checkbox.length;i++){
if(checkbox[i]==which){

}else{
checkbox[i].checked=false;
}
}
}
</script>
</body>
</html>

0

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
  <script>
    angular.module('app', []).controller('appc', ['$scope',
      function($scope) {
        $scope.selected = 'male';
      }
    ]);
  </script>
</head>

<body ng-app="app" ng-controller="appc">
  <label>SELECTED: {{selected}}</label>
  <div>
    <input type="checkbox" ng-checked="selected=='male'" ng-true-value="'male'" ng-model="selected">Male
    <br>
    <input type="checkbox" ng-checked="selected=='female'" ng-true-value="'female'" ng-model="selected">Female
    <br>
    <input type="checkbox" ng-checked="selected=='other'" ng-true-value="'other'" ng-model="selected">Other
  </div>
</body>
</html>


0

यदि किसी को बाहरी जावास्क्रिप्ट पुस्तकालयों के बिना एक समाधान की आवश्यकता है तो आप इस उदाहरण का उपयोग कर सकते हैं। 0..1 मानों की अनुमति देने वाले चेकबॉक्स का एक समूह। आप चेकबॉक्स घटक या संबंधित लेबल पाठ पर क्लिक कर सकते हैं।

    <input id="mygroup1" name="mygroup" type="checkbox" value="1" onclick="toggleRadioCheckbox(this)" /> <label for="mygroup1">Yes</label>
    <input id="mygroup0" name="mygroup" type="checkbox" value="0" onclick="toggleRadioCheckbox(this)" /> <label for="mygroup0">No</label>

- - - - - - - - 

    function toggleRadioCheckbox(sender) {
        // RadioCheckbox: 0..1 enabled in a group 
        if (!sender.checked) return;
        var fields = document.getElementsByName(sender.name);
        for(var idx=0; idx<fields.length; idx++) {
            var field = fields[idx];
            if (field.checked && field!=sender)
                field.checked=false;
        }
    }

0

मेरा संस्करण: डेटा विशेषताओं और वेनिला जावास्क्रिप्ट का उपयोग करें

<div class="test-checkbox">
    Group One: <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupOne" value="Eat" />Eat</label>
    <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupOne" value="Sleep" />Sleep</label>
    <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupOne" value="Play" />Play</label>
    <br />
    Group Two: <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupTwo" value="Fat" />Fat</label>
    <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupTwo" value="Comfort" />Comfort</label>
    <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupTwo" value="Happy" />Happy</label>
</div>
<script>
    let cbxes = document.querySelectorAll('input[type="checkbox"][data-limit="only-one-in-a-group"]');
    [...cbxes].forEach((cbx) => {
        cbx.addEventListener('change', (e) => {
            if (e.target.checked)
                uncheckOthers(e.target);
        });
    });
    function uncheckOthers (clicked) {
        let name = clicked.getAttribute('name');
        // find others in same group, uncheck them
        [...cbxes].forEach((other) => {
            if (other != clicked && other.getAttribute('name') == name)
                other.checked = false;
        });
    }
</script>

-1

परिशोधन:
और बिना jQuery के, इस तरह एक चेकबॉक्स संरचना के लिए:

<label>
<input type="checkbox" id="mytrackers_1" name="blubb_1" value="">--- Bitte ausw&#228;hlen ---
</label>
<label>
<input type="checkbox" id="mytrackers_2" name="blubb_2" value="7">Testtracker
</label>
<label>
<input type="checkbox" id="mytrackers_3" name="blubb_3" value="3">Kundenanfrage
</label>
<label>
<input type="checkbox" id="mytrackers_4" name="blubb_4" value="2">Anpassung
</label>
<label>
<input type="checkbox" id="mytrackers_5" name="blubb_5" value="1" checked="checked" >Fehler
</label>
<label>
<input type="checkbox" id="mytrackers_6" name="blubb_6" value="4">Bedienung
</label>
<label>
<input type="checkbox" id="mytrackers_7" name="blubb_7" value="5">Internes
</label>
<label>
<input type="checkbox" id="mytrackers_8" name="blubb_8" value="6">&#196;nderungswunsch
</label>

आप इसे इस तरह से करेंगे:

    /// attach an event handler, now or in the future, 
    /// for all elements which match childselector,
    /// within the child tree of the element maching parentSelector.
    function subscribeEvent(parentSelector, eventName, childSelector, eventCallback) {
        if (parentSelector == null)
            throw new ReferenceError("Parameter parentSelector is NULL");
        if (childSelector == null)
            throw new ReferenceError("Parameter childSelector is NULL");
        // nodeToObserve: the node that will be observed for mutations
        var nodeToObserve = parentSelector;
        if (typeof (parentSelector) === 'string')
            nodeToObserve = document.querySelector(parentSelector);
        var eligibleChildren = nodeToObserve.querySelectorAll(childSelector);
        for (var i = 0; i < eligibleChildren.length; ++i) {
            eligibleChildren[i].addEventListener(eventName, eventCallback, false);
        } // Next i 
        // /programming/2712136/how-do-i-make-this-loop-all-children-recursively
        function allDescendants(node) {
            if (node == null)
                return;
            for (var i = 0; i < node.childNodes.length; i++) {
                var child = node.childNodes[i];
                allDescendants(child);
            } // Next i 
            // IE 11 Polyfill 
            if (!Element.prototype.matches)
                Element.prototype.matches = Element.prototype.msMatchesSelector;
            if (node.matches) {
                if (node.matches(childSelector)) {
                    // console.log("match");
                    node.addEventListener(eventName, eventCallback, false);
                } // End if ((<Element>node).matches(childSelector))
                // else console.log("no match");
            } // End if ((<Element>node).matches) 
            // else console.log("no matchfunction");
        } // End Function allDescendants 
        // Callback function to execute when mutations are observed
        var callback = function (mutationsList, observer) {
            for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {
                var mutation = mutationsList_1[_i];
                // console.log("mutation.type", mutation.type);
                // console.log("mutation", mutation);
                if (mutation.type == 'childList') {
                    for (var i = 0; i < mutation.addedNodes.length; ++i) {
                        var thisNode = mutation.addedNodes[i];
                        allDescendants(thisNode);
                    } // Next i 
                } // End if (mutation.type == 'childList') 
                // else if (mutation.type == 'attributes') { console.log('The ' + mutation.attributeName + ' attribute was modified.');
            } // Next mutation 
        }; // End Function callback 
        // Options for the observer (which mutations to observe)
        var config = { attributes: false, childList: true, subtree: true };
        // Create an observer instance linked to the callback function
        var observer = new MutationObserver(callback);
        // Start observing the target node for configured mutations
        observer.observe(nodeToObserve, config);
    } // End Function subscribeEvent 


    function radioCheckbox_onClick() 
    { 
        // console.log("click", this);
        let box = this;
        if (box.checked) 
        {
            let name = box.getAttribute("name");
            let pos = name.lastIndexOf("_");
            if (pos !== -1) name = name.substr(0, pos);

            let group = 'input[type="checkbox"][name^="' + name + '"]';
            // console.log(group);
            let eles = document.querySelectorAll(group);
            // console.log(eles);
            for (let j = 0; j < eles.length; ++j) 
            {
                eles[j].checked = false;
            }
            box.checked = true;
        }
        else
            box.checked = false;
    }


    // /programming/9709209/html-select-only-one-checkbox-in-a-group
    function radioCheckbox()
    { 
        // on instead of document...
        let elements = document.querySelectorAll('input[type="checkbox"]')

        for (let i = 0; i < elements.length; ++i)
        {
            // console.log(elements[i]);
            elements[i].addEventListener("click", radioCheckbox_onClick, false);

        } // Next i 

    } // End Function radioCheckbox 


    function onDomReady()
    {
        console.log("dom ready");
        subscribeEvent(document, "click", 
            'input[type="checkbox"]', 
            radioCheckbox_onClick
        ); 

        // radioCheckbox();
    }

    if (document.addEventListener) document.addEventListener("DOMContentLoaded", onDomReady, false);
    else if (document.attachEvent) document.attachEvent("onreadystatechange", onDomReady);
    else window.onload = onDomReady;

    function onPageLoaded() {
        console.log("page loaded");
    }

    if (window.addEventListener) window.addEventListener("load", onPageLoaded, false);
    else if (window.attachEvent) window.attachEvent("onload", onPageLoaded);
    else window.onload = onPageLoaded;

-1
//Here is a solution using JQuery    
<input type = "checkbox" class="a"/>one
    <input type = "checkbox" class="a"/>two
    <input type = "checkbox" class="a"/>three
    <script>
       $('.a').on('change', function() {
            $('.a').not(this).prop('checked',false);
    });
    </script>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.