किसी सरणी में सभी चयनित चेकबॉक्स प्राप्त करना


168

इसलिए मेरे पास ये चेकबॉक्स हैं:

<input type="checkbox" name="type" value="4" />
<input type="checkbox" name="type" value="3" />
<input type="checkbox" name="type" value="1" />
<input type="checkbox" name="type" value="5" />

और इसी तरह। उनमें से लगभग 6 हैं और हाथ से कोडित हैं (अर्थात डीबी से प्राप्त नहीं किए गए हैं) इसलिए वे थोड़ी देर के लिए एक ही रहने की संभावना है।

मेरा सवाल यह है कि मैं उन सभी को एक सरणी (जावास्क्रिप्ट) में कैसे प्राप्त कर सकता हूं, इसलिए मैं $.postJquery का उपयोग करके AJAX अनुरोध करते समय उनका उपयोग कर सकता हूं ।

कोई विचार?

संपादित करें: मैं केवल चयनित चेकबॉक्स को सरणी में जोड़ना चाहूंगा



जबकि दूसरा प्रश्न नया है और यह एक अधिक लोकप्रिय है, दूसरे के पास जवाबों का एक बेहतर, अधिक रसीला संग्रह है (यहां रणनीतियों के साथ, कुछ और)।
जेसन सी

जवाबों:


331

प्रारूपित:

$("input:checkbox[name=type]:checked").each(function(){
    yourArray.push($(this).val());
});

उम्मीद है, यह काम करेगा।


1
और क्या करना है अगर चेक बॉक्स को अनचेक करें, सरणी से मान हटाने के लिए
जुबिन पटेल

@JubinPatel आपको इस कोड से पहले सरणी को रीसेट करने की आवश्यकता है। yourArray = []
आरआरके

11
आप mapइसके बजाय अपने सरणी को तुरंत परिभाषित कर सकते हैं each:var yourArray = $("input:checkbox[name=type]:checked").map(function(){return $(this).val()}).get()
डुवराई

3
function get_selected_checkboxes_array(){ var ch_list=Array(); $("input:checkbox[type=checkbox]:checked").each(function(){ch_list.push($(this).val());}); return ch_list; }
M

50
var chk_arr =  document.getElementsByName("chkRights[]");
var chklength = chk_arr.length;             

for(k=0;k< chklength;k++)
{
    chk_arr[k].checked = false;
} 

6
जैसा कि मैं ऊपर दिए गए कोड को समझता हूं, यह सभी चेकबॉक्स के माध्यम से पुनरावृत्त करता है और उन्हें अनचेक करता है। यह उत्तर प्रश्न के साथ कैसे जुड़ा है?
Terite

2
यह बस चेकबॉक्स के माध्यम से छोरों और उन्हें अन-चेक करता है। वेनिलाजेएस में, सही उत्तर के लिए, कृपया नीचे ज़ाहिद उलाह का उत्तर देखें।
jmknoll

2
यह प्रश्न का उत्तर कैसे देता है? यह कुछ पूरी तरह से असंबंधित है जो पूछा जाता है। इतने उथल-पुथल क्यों हैं? क्या मुझे कुछ याद आ रहा है, या लोगों द्वारा इसे उखाड़ने के बाद संपादित किया गया प्रश्न था?
शुभम चौधरी

46

शुद्ध जेएस

उन लोगों के लिए जो jQuery का उपयोग नहीं करना चाहते हैं

var array = []
var checkboxes = document.querySelectorAll('input[type=checkbox]:checked')

for (var i = 0; i < checkboxes.length; i++) {
  array.push(checkboxes[i].value)
}

5
हमेशा एक वेनिला जेएस जवाब प्यार करता हूँ।
फॉर्मिकिनि

39

मैं इसे परीक्षण नहीं किया था, लेकिन यह काम करना चाहिए

<script type="text/javascript">
var selected = new Array();

$(document).ready(function() {

  $("input:checkbox[name=type]:checked").each(function() {
       selected.push($(this).val());
  });

});

</script>

सरणी में मान जोड़ने के लिए धक्का लेकिन अनचेक पर क्या निकालना है?
जुबीन पटेल

24

यह काम कर जाना चाहिए:

$('input:checked');

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

$('input:checkbox:checked');

$('input:checkbox').filter(':checked');

14

MooTools 1.3 में (लेखन के समय नवीनतम):

var array = [];
$$("input[type=checkbox]:checked").each(function(i){
    array.push( i.value );
});

7
प्रश्न की उम्र या समाधान की प्रकृति प्रासंगिक नहीं थी।
लीजी

4
क्योंकि मुझे यह प्रश्न तब मिला जब MooTools का उपयोग करके उसी समस्या के उत्तर की तलाश थी।
लीजी

ध्यान दें कि यह उत्तर MooTools 1.3 से संबंधित है, jQuery से नहीं।
लीजी डे

13

यदि आप एक वेनिला JS का उपयोग करना चाहते हैं, तो आप इसे @ zahid-ullah के समान कर सकते हैं, लेकिन लूप से बचें:

  var values = [].filter.call(document.getElementsByName('fruits[]'), function(c) {
    return c.checked;
  }).map(function(c) {
    return c.value;
  });

ES6 में समान कोड बेहतर तरीके से दिखता है:

var values = [].filter.call(document.getElementsByName('fruits[]'), (c) => c.checked).map(c => c.value);


12

जावास्क्रिप्ट में यह इस तरह होगा (डेमो लिंक) :

// get selected checkboxes
function getSelectedChbox(frm) {
  var selchbox = [];// array that will store the value of selected checkboxes
  // gets all the input tags in frm, and their number
  var inpfields = frm.getElementsByTagName('input');
  var nr_inpfields = inpfields.length;
  // traverse the inpfields elements, and adds the value of selected (checked) checkbox in selchbox
  for(var i=0; i<nr_inpfields; i++) {
    if(inpfields[i].type == 'checkbox' && inpfields[i].checked == true) selchbox.push(inpfields[i].value);
  }
  return selchbox;
}   

12

ES6 संस्करण:

const values = Array
  .from(document.querySelectorAll('input[type="checkbox"]'))
  .filter((checkbox) => checkbox.checked)
  .map((checkbox) => checkbox.value);


5

अस्थायी चर के लिए कोई ज़रूरत नहीं के साथ शुद्ध जावास्क्रिप्ट:

Array.from(document.querySelectorAll("input[type=checkbox][name=type]:checked")).map(e => e.value)

वेनिला जेएस
एम। मुफ्ती


3

जाँच करने पर चेकबॉक्स के लिए मूल्य जोड़ें और मूल्य घटाने पर मूल्य घटाएं

$('#myDiv').change(function() {
  var values = 0.00;
  {
    $('#myDiv :checked').each(function() {
      //if(values.indexOf($(this).val()) === -1){
      values=values+parseFloat(($(this).val()));
      // }
    });
    console.log( parseFloat(values));
  }
});
<div id="myDiv">
  <input type="checkbox" name="type" value="4.00" />
  <input type="checkbox" name="type" value="3.75" />
  <input type="checkbox" name="type" value="1.25" />
  <input type="checkbox" name="type" value="5.50" />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>


कृपया अपने उत्तर में थोड़ा सा स्पष्टीकरण जोड़ें। शुद्ध कोड उत्तर आमतौर पर उपयोगी नहीं होते हैं।
सुजस्टिरनी 7

3

आधुनिक ब्राउज़रों में वेनिला जेएस के साथ ऐसा करने का एक और तरीका (कोई IE समर्थन नहीं है, और दुख की बात है कि लेखन के समय कोई आईओएस सफारी समर्थन नहीं है) फॉर्मडाटा.गेटएएल () के साथ है :

var formdata   = new FormData(document.getElementById("myform"));
var allchecked = formdata.getAll("type"); // "type" is the input name in the question

// allchecked is ["1","3","4","5"]  -- if indeed all are checked

1

Jquery का उपयोग करना

आपको केवल प्रत्येक इनपुट में कक्षा जोड़ने की आवश्यकता है, मेरे पास "स्रोत" श्रेणी है, आप इसे बदल सकते हैं

<input class="source" type="checkbox" name="type" value="4" />
<input class="source" type="checkbox" name="type" value="3" />
<input class="source" type="checkbox" name="type" value="1" />
<input class="source" type="checkbox" name="type" value="5" />

<script type="text/javascript">
$(document).ready(function() {
    var selected_value = []; // initialize empty array 
    $(".source:checked").each(function(){
        selected_value.push($(this).val());
    });
    console.log(selected_value); //Press F12 to see all selected values
});
</script>

1

इसे इस्तेमाल करो:

var arr = $('input:checkbox:checked').map(function () {
  return this.value;
}).get();

0

यदि आप बटन क्लिक या प्रविष्टि को चलाने के लिए कुछ का उपयोग करते हैं, तो पहले से मौजूद सरणी को रोकने के लिए टिप्पणी का उपयोग करें

$('#myDiv').change(function() {
  var values = [];
  {
    $('#myDiv :checked').each(function() {
      //if(values.indexOf($(this).val()) === -1){
      values.push($(this).val());
      // }
    });
    console.log(values);
  }
});
<div id="myDiv">
  <input type="checkbox" name="type" value="4" />
  <input type="checkbox" name="type" value="3" />
  <input type="checkbox" name="type" value="1" />
  <input type="checkbox" name="type" value="5" />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>


0

आप कुछ इस तरह की कोशिश कर सकते हैं:

$('input[type="checkbox"]').change(function(){
       var checkedValue = $('input:checkbox:checked').map(function(){
                return this.value;
            }).get();         
            alert(checkedValue);   //display selected checkbox value     
 })

यहाँ

$('input[type="checkbox"]').change(function() call when any checkbox checked or unchecked, after this
$('input:checkbox:checked').map(function()  looping on all checkbox,

0

यहाँ एक ही समस्या के लिए मेरा कोड है कोई भी यह कोशिश कर सकता है। jQuery

<script>
$(document).ready(function(){`
$(".check11").change(function(){
var favorite1 = [];        
$.each($("input[name='check1']:checked"), function(){                    
favorite1.push($(this).val());
document.getElementById("countch1").innerHTML=favorite1;
});
});
});
</script>

0

function selectedValues(ele){
  var arr = [];
  for(var i = 0; i < ele.length; i++){
    if(ele[i].type == 'checkbox' && ele[i].checked){
      arr.push(ele[i].value);
    }
  }
  return arr;
}


एक उपयोगी उत्तर के लिए इस प्रतिक्रिया को बढ़ाया जाना चाहिए। समझाएं कि यह सवाल का जवाब क्यों है।
जेरेन हेयेर

आपका स्वागत है ढेर अतिप्रवाह और आपके योगदान के लिए धन्यवाद! यह अच्छा होगा यदि आप इस गाइड को पढ़ेंगे कि एक अच्छा उत्तर कैसे लिखें और तदनुसार अपने उत्तर को समायोजित करें। धन्यवाद!
डेविड

0
var array = []
    $("input:checkbox[name=type]:checked").each(function(){
        array.push($(this).val());
    });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.