İşaretli onay kutusunun değerini al?


177

Yani şöyle bir kod var:

<input class="messageCheckbox" type="checkbox" value="3" name="mailId[]">
<input class="messageCheckbox" type="checkbox" value="1" name="mailId[]">

Sadece şu anda işaretli olan onay kutusunun değerini almak için Javascript gerekir.

DÜZENLEME : Eklemek için yalnızca BİR onay kutusu olacaktır.


1
Javascript kodu veya jQuery ihtiyacınız var?
Andrey Vorobyev

6
Neden radyo düğmesini kullanmıyorsunuz?
PraveenVenu

Çünkü bir site için bir eklenti yazıyorum
Matthew 'zorunlu' Bryant

Yalnızca bir onay kutusuna ihtiyacınız varsa, neden radyo düğmelerini kullanmıyorsunuz? bu, bu iş için daha uygun kullanıcı arayüzü bileşenidir.
Tal Yaron

@TalYaron Radyo düğmelerinin seçimini kaldırabilir misiniz? Ben js kodu olmadan değil düşünüyorum. Belki OP kutunun seçimini kolayca kaldırmak istiyor olabilir.
R3tep

Yanıtlar:


256

Modern tarayıcılar için :

var checkedValue = document.querySelector('.messageCheckbox:checked').value;

Şunları kullanarakjQuery :

var checkedValue = $('.messageCheckbox:checked').val();

Saf javascript olmadanjQuery :

var checkedValue = null; 
var inputElements = document.getElementsByClassName('messageCheckbox');
for(var i=0; inputElements[i]; ++i){
      if(inputElements[i].checked){
           checkedValue = inputElements[i].value;
           break;
      }
}

9
@Mageek, aynı kimliği birden çok öğeye eklemek kötü bir uygulamadır.
Mühendis

@Mühendis Hayır, her onay kutusu için farklı bir kimlik girmeniz yeterli.
Mageek

3
@Engineer "Bayt kaydetme" çünkü sadece document.getElementById("foo").value();hesaplamaları yazmalı ve kaydetmeliyiz çünkü getElementByIdkesinlikle daha hızlı getElementsByTagNameve bir döngü.
Mageek

9
jQuery için tanımlanmış ise öznitelik değerini döndürecek .is(":checked")şekilde doğru yoldur .val().. ve tanımlanmamış olsa bile boole değeri değil "on" döndürür .. jsfiddle.net/d5f7wnzu
Peter

1
document.querySelector('.messageCheckbox:checked').valueonay kutusu işaretlenmezse TypeError oluşturur
Meisner

262

Yukarıdakilerin hiçbiri benim için işe yaramadı, ancak bunu kullanın:

document.querySelector('.messageCheckbox').checked;

Mutlu kodlama.


Hemfikirim. Ne düşündüğümü doğruladın. Var chk1 = document.getElementById ('messageCheckbox') koymak istiyorum; Bu şekilde, "chk1" değişkeninin özelliklerine başvurabilirim: işaretli, etkin, stil vb.
JustJohn

4
Bunu nereden buldun id? Açıklayabilir misin? classGirişte kullanılan soruyu soran adam aslında. Tam kodu sağlayabilirseniz iyi olacak, böylece nereden aldığınızdan anlayabiliyorumid
devfaysal

3
Bu OP tarafından sağlanan örnek kod ile çalışamaz ... Hızlı bir düzeltme doğru yapabilir, ancak soruyu cevaplarken neden bu kadar çok oy var merak ediyorum.
Laurent

1
Bunun ne olduğunu ve OP'yi nasıl ele aldığını genişletmek için önerilen cevabınızı düzenleyebilir misiniz?
Ro Yo Mi

2
@PradeepKumarPrabaharan muhtemelen benim gibi insanlar (birden fazla öğe için kimlik kullanmıyor) .value neden onları tanımsız verdi merak.

111

Bunu kodumda kullanıyorum.

var x=$("#checkbox").is(":checked");

Onay kutusu işaretliyse xdoğru olur, aksi takdirde yanlış olur.


7
Bu soruya cevap vermez, ancak bir onay kutusunun işaretli olup olmadığını belirlemek için kullanılabilir. +1 bana hala yardımcı olduğu için.
Kevin Jurkowski

5
Soruyu cevaplamıyor ama tam olarak aradığım şey bu.
phn

#checkboxDeğişken olduğunda kullanışlıdır, ör myCheckbox.
Optimae

15

düz javascript ile:

function test() {
    var cboxes = document.getElementsByName('mailId[]');
    var len = cboxes.length;
    for (var i=0; i<len; i++) {
        alert(i + (cboxes[i].checked?' checked ':' unchecked ') + cboxes[i].value);
    }
}
function selectOnlyOne(current_clicked) {
    var cboxes = document.getElementsByName('mailId[]');
    var len = cboxes.length;
    for (var i=0; i<len; i++) {
        cboxes[i].checked = (cboxes[i] == current);
    }
}

4

$(document).ready(function() {
  var ckbox = $("input[name='ips']");
  var chkId = '';
  $('input').on('click', function() {
    
    if (ckbox.is(':checked')) {
      $("input[name='ips']:checked").each ( function() {
   			chkId = $(this).val() + ",";
        chkId = chkId.slice(0, -1);
 	  });
       
       alert ( $(this).val() ); // return all values of checkboxes checked
       alert(chkId); // return value of checkbox checked
    }     
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="checkbox" name="ips" value="12520">
<input type="checkbox" name="ips" value="12521">
<input type="checkbox" name="ips" value="12522">


4

Bu soruya doğrudan cevap vermez, ancak gelecekteki ziyaretçilere yardımcı olabilir.


Bir değişkenin her zaman onay kutusunun geçerli durumu olmasını istiyorsanız (durumunu kontrol etmeye devam etmek yerine), onchangeo değişkeni ayarlamak için olayı değiştirebilirsiniz .

Bu HTML'de yapılabilir:

<input class='messageCheckbox' type='checkbox' onchange='some_var=this.checked;'>

veya JavaScript ile:

cb = document.getElementsByClassName('messageCheckbox')[0]
cb.addEventListener('change', function(){some_var = this.checked})

2

Bunu kullan:

alert($(".messageCheckbox").is(":checked").val())

Bu, onay kutularının "messageCheckbox" sınıfına sahip olduğunu kontrol etmek için varsayılır, aksi takdirde girişin onay kutusu türü, vb. Olup olmadığını kontrol etmeniz gerekir.


2
<input class="messageCheckbox" type="checkbox" onchange="getValue(this.value)" value="3" name="mailId[]">

<input class="messageCheckbox" type="checkbox" onchange="getValue(this.value)" value="1" name="mailId[]">
function getValue(value){
    alert(value);
}

0

Eğer kullanıyorsanız Semantik UI Tepki , dataikinci parametre olarak geçirilironChange olay.

Bu nedenle tesise checkedaşağıdaki gibi erişebilirsiniz :

<Checkbox label="Conference" onChange={(e, d) => console.log(d.checked)} />

0

Yukarıdakilerin hiçbiri, kutu işaretlenmediğinde konsolda hata atmadan benim için işe yaramadı, bu yüzden bu satırlar boyunca bir şey yaptım (onclick ve onay kutusu işlevi sadece demo amaçlı kullanılıyor, benim kullanımım durumunda bu bir çok daha büyük form gönderme işlevi):

function checkbox() {
  var checked = false;
  if (document.querySelector('#opt1:checked')) {
     checked = true;
  }
  document.getElementById('msg').innerText = checked;
}
<input type="checkbox" onclick="checkbox()" id="opt1"> <span id="msg">Click The Box</span>


-3

Projemde genellikle bu parçacıkları kullanıyorum:

var type[];
$("input[name='messageCheckbox']:checked").each(function (i) {
                type[i] = $(this).val();
            });

Ve iyi çalışıyor. Saygılarımla.


Bunu yapmanın son derece verimsiz bir yolu.
AStopher
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.