2016-03-21 36 views
2

ben onay kutularını işaretli değerler ve bir dizi almaya çalışıyorum metin butonuna metinalın değeri ve seçilen onay kutularını

<input type="checkbox" name="checkbox[]" value="1" /><label>text1</label> 
<input type="checkbox" name="checkbox[]" value="2" /><label>text2</label> 
<input type="checkbox" name="checkbox[]" value="3" /><label>text3</label> 
<input type="checkbox" name="checkbox[]" value="4" /><label>text4</label> 

tıklayın Onay kutularını değerlerini alıyorum ama nasıl dizide

da metni almak için
var checkboxes = document.getElementsByName('checkbox[]'); 
var vals = 0; 
for (var i=0, n=checkboxes.length;i<n;i++) { 
    if (checkboxes[i].checked) { 
     vals += ","+checkboxes[i].value; 
    } 
} 

Teşekkür ederiz!

cevap

5

Sen değer dizisi oluşturmak için map() kullanabilirsiniz size gereken: Ancak özellikleri olarak etiketlere sahip bir nesne oluşturmak için daha mantıklı olur İstenen çıktıyı verilen

var labelValues = $(':checkbox:checked').map(function() { 
    return [ $(this).next('label').text(), this.value ]; 
}).get(); 

Working example

böyle bir şey:

var obj = {}; 
$(':checkbox:checked').each(function() { 
    obj[$(this).next('label').text()] = this.value; 
}); 

Working example

+0

ap() yaklaşımı. Bir çekicilik gibi çalıştı :) Yardımınız için çok teşekkür ederim .. değer ve metin dizisini iki değişkene ayırabilir misiniz – Sushant

1

@ Rory'nin yanıtları, hem değeri hem de metni tek bir diziye döndürmek için iyidir. Ancak, OP'un değer ve metni ayrı dizilere döndürmesini isteyerek, bunu yapmak için aşağıdaki yolu öneririm.

Yapmanız gereken tek şey, metinlerden ayrı değerler almak için 2 dizi kullanmaktır.

Working JSFiddle here.

Run aşağıdaki pasajı

konsolunda çıkışını görmek için.
Bu örnek döndürür:

  1. Seçilmiş onay kutusu Değerlerini bir dizide
  2. Seçilmiş onay kutusu metinleri Bir dizide
  3. bir dizideki
  4. Seçilmiş onay kutusu (durumda eğer istersen)

var selectedCheckBoxValue = []; 
 
var selectedCheckBoxText = []; 
 

 
var selectedCheckBox = $(':checkbox:checked').map(function(i) { 
 

 
    selectedCheckBoxValue[i] = this.value; 
 
    selectedCheckBoxText[i] = $(this).next('label').text(); 
 
    return this; 
 
}).get(); 
 

 

 
//Selected Checkboxes Value in a seperate Array 
 
console.log(selectedCheckBoxValue); 
 

 
//Selected Checkboxes Text in a seperate Array 
 
console.log(selectedCheckBoxText); 
 

 
//Selected Checkboxes element in a seperate Array 
 
console.log(selectedCheckBox);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input type="checkbox" name="checkbox[]" value="1" checked="true" /> 
 
<label>text1</label> 
 
<input type="checkbox" name="checkbox[]" value="2" checked="true" /> 
 
<label>text2</label> 
 
<input type="checkbox" name="checkbox[]" value="3" /> 
 
<label>text3</label> 
 
<input type="checkbox" name="checkbox[]" value="4" checked="true" /> 
 
<label>text4</label>

İlgili konular