JQuery ile bir onay kutusunun işaretli olup olmadığını test etme


588

Onay kutusu işaretliyse, yalnızca değeri 1 olarak almam gerekir; aksi halde, 0 olarak almam gerekir. Bunu jQuery kullanarak nasıl yapabilirim?

$("#ans").val() bu durumda bana her zaman bir hak verecek:

<input type="checkbox" id="ans" value="1" />

2
.val (), kontrol durumunu değil, değer niteliğini elde etmektir. Değer özelliği herhangi bir şey olabilir, boolean olması gerekmez.
Pablo Pazos

eğer hala etraftaysanız, modern yazılım için kabul edilen cevabı güncellemek isteyebilirsiniz ... bir çok insan hala bu soruyu görüyor
xaxxon

Yanıtlar:


1008

İşaretlenip .is(':checked')işaretlenmediğini belirlemek için kullanın ve ardından değerinizi buna göre ayarlayın.

Daha fazla bilgi burada.


1
Buna ek olarak, bir if cümlesinde $ ("# id"). ("İşaretli") yaptığınızda, dönüşte açık / kapalı değil, doğru veya yanlış alırsınız ve bunu arka uç komut dosyanıza gönderebilirsiniz ve ne istersen yap.
Zanoldor

1
Muhtemelen bu günümüzde önemli değil: ReSharper (sanırım) " sözde sınıf 'işaretli' Internet Explorer 8.0 ile uyumlu değil " uyarısı verir .
Uwe Keim

211
$("#ans").attr('checked') 

işaretli olup olmadığını söyleyecektir. Onay kutusunu işaretlemek / işaretini kaldırmak için ikinci bir true / false parametresini de kullanabilirsiniz.

$("#ans").attr('checked', true);

Başına yorum kullanmak propyerine attrkullanılabilir. Örneğin:

$("#ans").prop('checked')

90

Sadece kullan $(selector).is(':checked')

Bir boole değeri döndürür.


56
// use ternary operators
$("#ans").is(':checked') ? 1 : 0;

@ Değerini üçlü üçlü sözdizimini kullanarak ayarlamak için, örneğin:: a = ischecked? 1: 0

21

Stefan Brinkmann'ın cevabı mükemmel, ancak yeni başlayanlar için eksik (değişken atamayı atlıyor). Sadece netleştirmek için:

// this structure is called a ternary operator
var cbAns = ( $("#ans").is(':checked') ) ? 1 : 0;

Şöyle çalışır:

 var myVar = ( if test goes here ) ? 'ans if yes' : 'ans if no' ;

Misal:

var myMath = ( 1 > 2 ) ? 'yes' : 'no' ;
alert( myMath );

Uyarılar 'hayır'

Bu yardımcı olursa, lütfen Stefan Brinkmann'ın cevabını iptal edin.



15

Daha önce aynı sorunu buldum, umarım bu çözüm size yardımcı olabilir. ilk olarak, onay kutularınıza özel bir özellik ekleyin:

<input type="checkbox" id="ans" value="1" data-unchecked="0" />

değer elde etmek için bir jQuery uzantısı yazın:

$.fn.realVal = function(){
    var $obj = $(this);
    var val = $obj.val();
    var type = $obj.attr('type');
    if (type && type==='checkbox') {
        var un_val = $obj.attr('data-unchecked');
        if (typeof un_val==='undefined') un_val = '';
        return $obj.prop('checked') ? val : un_val;
    } else {
        return val;
    }
};

onay kutusu değerini almak için kodu kullanın:

$('#ans').realVal();

burada test edebilirsin


10
... çünkü jQuery "daha fazla yazma daha az yapmak" kitaplığı olarak bilinir
myshadowself

uzun bir hikaye var JQUERY geliştirici daha az yazmak ve daha fazlasını yapmak istiyorum. basit bir sorun basit bir çözüm hak
ShapCyber

evet, kabul etti, daha az yaz, daha fazlasını yap. uzantıyı bir kez yazarsınız ve geri kalan süre boyunca yalnızca API $ (someradio) .realVal () öğesini çağırırsınız, birçok kez uzantı yazmanıza gerek yoktur.
alphakevin

Uzantıyı bir kez yazmanıza bile gerek yoktu, nevermind 'birçok kez'! Oo
Coz

8
$('input:checkbox:checked').val();        // get the value from a checked checkbox

7
<input type="checkbox" id="ans" value="1" />

Jquery: var test= $("#ans").is(':checked') ve doğru ya da yanlış döndürür.

Fonksiyonunuzda:

$test =($request->get ( 'test' )== "true")? '1' : '0';


4

kullanın:

$("#ans option:selected").val()

seçilmezse, ilk kısım hiçbir şey döndürmez, değil mi?
27xx11

@Senthil, OP seçilmişse, seçili bir onay kutusunun değerini almak return 1istemiyor
Om Shankar

4
function chkb(bool){
if(bool)
return 1;
return 0;
}

var statusNum=chkb($("#ans").is(':checked'));

statusNum onay kutusu işaretliyse 1, işaretlenmezse 0 olur.

EDIT: DOM işlevine de ekleyebilirsiniz.

function chkb(el){
if(el.is(':checked'))
return 1;
return 0;
}

var statusNum=chkb($("#ans"));

4

Son zamanlarda, kullanıcı düğmeyi tıkladığında onay kutusunun kontrol değerine ihtiyacım olduğu bir durumla karşılaştım. Bunu yapmanın tek uygun yolu prop()niteliği kullanmaktır .

var ansValue = $("#ans").prop('checked') ? $("#ans").val() : 0;

bu benim durumumda çalıştı belki birinin buna ihtiyacı olacak.

Denediğimde .attr(':checked')döndü checkedama boolean değeri ve .val()öznitelik değerini döndürmek istedim value.


4

Orada çeşitli seçenekler vardır ....

 1. $("#ans").is(':checked') 
 2. $("#ans:checked")
 3. $('input:checkbox:checked'); 

Tüm bu seçenek true değerini döndürürse değeri hesaplayarak ayarlayabilirsiniz.


Birincisi (': işaretli') olmalıdır, aksi takdirde çalışmaz.
Arie Livshin

2

Bunu dene

$('input:checkbox:checked').click(function(){
    var val=(this).val(); // it will get value from checked checkbox;
})

Burada bayrak işaretlenirse doğrudur aksi takdirde yanlış

var flag=$('#ans').attr('checked');

Yine bu cheked yapacak

$('#ans').attr('checked',true);


0

Bu iki yöntemle değer (doğru / yanlış) elde edebilirsiniz

$("input[type='checkbox']").prop("checked");
$("input[type='checkbox']").is(":checked");

0

İlk önce değerin kontrol edildiğini kontrol edin

$("#ans").find("checkbox").each(function(){
    if ($(this).prop('checked')==true){ 
    var id = $(this).val()
    }
});

Başka 0 değerini ayarlayın


0

İşaretli tam sayı değeri olup olmadığını istiyorsanız şunu deneyin:

$("#ans:checked").length

0

Bunu şu şekilde yapabilirsiniz:

$('input[id=ans]').is(':checked');     
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.