checkbox
Kullanarak bir jQuery işaretlemek için böyle bir şey yapmak istiyorum :
$(".myCheckBox").checked(true);
veya
$(".myCheckBox").selected(true);
Böyle bir şey var mı?
$("#mycheckbox").click();
checkbox
Kullanarak bir jQuery işaretlemek için böyle bir şey yapmak istiyorum :
$(".myCheckBox").checked(true);
veya
$(".myCheckBox").selected(true);
Böyle bir şey var mı?
$("#mycheckbox").click();
Yanıtlar:
Kullanım .prop()
:
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
Yalnızca bir öğeyle çalışıyorsanız, altta yatan öğeye her zaman erişebilir HTMLInputElement
ve .checked
özelliğini değiştirebilirsiniz :
$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;
Bunun yerine .prop()
ve .attr()
yöntemlerini kullanmanın yararı, eşleşen tüm öğeler üzerinde çalışacaklarıdır.
.prop()
Kullanmak gerek yüzden yöntem mevcut değildir .attr()
.
$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);
Bu olduğunu Not jQuery'nin birimi tarafından kullanılan yaklaşım sürüm 1.6 öncesinde test ve kullanmaktan daha iyidir $('.myCheckbox').removeAttr('checked');
kutu başlangıçta kontrol edildi eğer ikincisi irade beri, yapılan çağrının davranışı değiştirmek .reset()
bunu içeren herhangi formdaki - muhtemelen ince ama istenmeyen davranış değişikliği.
Daha fazla bağlam için, checked
1.5.x'ten 1.6'ya geçişte özniteliğin / özelliğin işlenmesindeki değişikliklerle ilgili bazı eksik tartışmalar , sürüm 1.6 sürüm notlarında ve belgelerin Nitelikler ile Özellikler bölümünde bulunabilir ..prop()
DOMElement.checked = true
". Ama ihmal edilebilir, çünkü bu sadece bir element ...
$(element).prop('checked')
tam bir yazım kaybıdır. element.checked
zaten var olan durumlarda kullanılmalıdırelement
kullanın:
$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);
Ve bir onay kutusunun işaretli olup olmadığını kontrol etmek istiyorsanız:
$('.myCheckbox').is(':checked');
Bu, çapraz platform standardı olduğundan ve form yeniden göndermelerine izin vereceğinden , jQuery ile onay kutularını kontrol etmenin ve işaretlemenin doğru yoludur .
$('.myCheckBox').each(function(){ this.checked = true; });
$('.myCheckBox').each(function(){ this.checked = false; });
Bunu yaparak, onay kutularını kontrol etmek ve işaretlerini kaldırmak için JavaScript standartlarını kullanıyorsunuz, bu nedenle onay kutusu öğesinin "işaretli" özelliğini düzgün bir şekilde uygulayan tüm tarayıcılar bu kodu kusursuz bir şekilde çalıştıracaktır. Bu tüm büyük tarayıcılar olmalıdır , ancak Internet Explorer 9'dan önce test yapamıyorum.
Sorun (jQuery 1.6):
Kullanıcı bir onay kutusunu tıkladığında, bu onay kutusu "işaretli" özellik değişikliklerine yanıt vermeyi durdurur.
Birisi onay kutusunu tıkladıktan sonra işi yapamayan onay kutusu özniteliğine bir örnek (bu Chrome'da olur).
Çözüm:
DOM öğelerinde JavaScript'in "işaretli" özelliğini kullanarak, DOM'u yapmasını istediğimiz şeyi yapmaya yönlendirmek yerine sorunu doğrudan çözebiliriz .
Bu eklenti, jQuery tarafından seçilen öğelerin işaretli özelliğini değiştirecek ve her durumda onay kutularını başarıyla işaretleyip işaretlerini kaldıracaktır. Bu nedenle, bu aşırı bir çözüm gibi görünse de, sitenizin kullanıcı deneyimini daha iyi hale getirecek ve kullanıcının hayal kırıklığını önlemeye yardımcı olacaktır.
(function( $ ) {
$.fn.checked = function(value) {
if(value === true || value === false) {
// Set the value of the checkbox
$(this).each(function(){ this.checked = value; });
}
else if(value === undefined || value === 'toggle') {
// Toggle the checkbox
$(this).each(function(){ this.checked = !this.checked; });
}
return this;
};
})( jQuery );
Alternatif olarak, bir eklenti kullanmak istemiyorsanız, aşağıdaki kod parçacıklarını kullanabilirsiniz:
// Check
$(':checkbox').prop('checked', true);
// Un-check
$(':checkbox').prop('checked', false);
// Toggle
$(':checkbox').prop('checked', function (i, value) {
return !value;
});
removeAttr('checked')
yerine kullanmanız gerekirattr('checked', false)
checked
öznitelik değişikliklerine yanıt vermediğini göstermekti .
$('.myCheckBox').prop('checked', true)
Bu şekilde, otomatik olarak eşleşen tüm öğelere uygulanır (yalnızca ayar yaparken, alma işlemi yalnızca ilk
prop
bir öğeye nitelikler ayarlamak için kesinlikle uygun yoldur.
Yapabilirsin
$('.myCheckbox').attr('checked',true) //Standards compliant
veya
$("form #mycheckbox").attr('checked', true)
Ateşlemek istediğiniz onay kutusunun onclick olayında özel kodunuz varsa, bunun yerine bunu kullanın:
$("#mycheckbox").click();
Özelliği tamamen kaldırarak işaretini kaldırabilirsiniz:
$('.myCheckbox').removeAttr('checked')
Bunun gibi tüm onay kutularını işaretleyebilirsiniz:
$(".myCheckbox").each(function(){
$("#mycheckbox").click()
});
$(".myCheckbox").click()
.attr
yerine kullanıyor .prop
.
$("#mycheckbox").click();
Ben de olayı değiştirmek için dinlerken benim için çalıştı ve .attr
& .prop
değişiklik olayı ateş vermedi.
$ .Fn nesnesini yeni yöntemlerle de genişletebilirsiniz:
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").attr("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").removeAttr("checked");
}
});
}(jQuery));
Sonra sadece şunları yapabilirsiniz:
$(":checkbox").check();
$(":checkbox").uncheck();
Veya bu adları kullanan başka bir kitaplık kullanmanız durumunda onlara mycheck () ve myuncheck () gibi daha benzersiz adlar vermek isteyebilirsiniz.
.attr
yerine kullanıyor .prop
.
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();
Sonuncusu onay kutusunun tıklama etkinliğini başlatır, diğerleri yapmaz. Dolayısıyla, tetiklemek istediğiniz onay kutusunun onclick olayında özel kodunuz varsa, sonuncuyu kullanın.
.attr
yerine kullanıyor .prop
.
click
etkinliği Firefox ve Edge'de güvenilmez.
Bir onay kutusunu işaretlemek için kullanmalısınız
$('.myCheckbox').attr('checked',true);
veya
$('.myCheckbox').attr('checked','checked');
ve bir onay kutusunun işaretini kaldırmak için her zaman false olarak ayarlamanız gerekir:
$('.myCheckbox').attr('checked',false);
Yaparsan
$('.myCheckbox').removeAttr('checked')
özniteliği birlikte kaldırır ve bu nedenle formu sıfırlayamazsınız.
KÖTÜ DEMO jQuery 1.6 . Bence bu kırık. 1.6 için bu konuda yeni bir yazı yapacağım.
YENİ ÇALIŞMA DEMO jQuery 1.5.2 , Chrome'da çalışır.
Her iki demo kullanımı
$('#tc').click(function() {
if ( $('#myCheckbox').attr('checked')) {
$('#myCheckbox').attr('checked', false);
} else {
$('#myCheckbox').attr('checked', 'checked');
}
});
$(".mycheckbox").prop("checked", true/false)
Bu, belirtilen alt dizeyi "ckbItem" içeren bir değere sahip belirtilen özniteliğe sahip öğeleri seçer:
$('input[name *= ckbItem]').prop('checked', true);
Name özniteliğinde ckbItem içeren tüm öğeleri seçer.
Sorunun ...
Tipik bir onay kutusu kümesinde, tüm giriş etiketlerinin aynı ada sahip olduğunu, özelliklerine göre farklılık gösterdiğini unutmayınvalue
: kümenin her girişi için kimlik yoktur.
Xian'ın cevabı , aşağıdaki kod satırı kullanılarak daha spesifik bir seçiciyle genişletilebilir :
$("input.myclass[name='myname'][value='the_value']").prop("checked", true);
Çözümü özlüyorum. Her zaman kullanacağım:
if ($('#myCheckBox:checked').val() !== undefined)
{
//Checked
}
else
{
//Not checked
}
.val()
her zaman geri dönecek olan açık olmayan gerçeği undefined
kullanırsınız. basitçe onun .length
yerine bakın) - daha okunabilir yaklaşımlar için stackoverflow.com/questions/901712/… adresine bakın .
JQuery 1.6 veya üstünü kullanarak bir onay kutusunu işaretlemek için şunu yapmanız yeterlidir:
checkbox.prop('checked', true);
Seçimi kaldırmak için şunu kullanın:
checkbox.prop('checked', false);
İşte jQuery kullanarak bir onay kutusunu değiştirmek için kullanmak istiyorum:
checkbox.prop('checked', !checkbox.prop('checked'));
JQuery 1.5 veya daha düşük bir sürümünü kullanıyorsanız :
checkbox.attr('checked', true);
Seçimi kaldırmak için şunu kullanın:
checkbox.attr('checked', false);
İşte bunu jQuery olmadan yapmanın bir yolu
function addOrAttachListener(el, type, listener, useCapture) {
if (el.addEventListener) {
el.addEventListener(type, listener, useCapture);
} else if (el.attachEvent) {
el.attachEvent("on" + type, listener);
}
};
addOrAttachListener(window, "load", function() {
var cbElem = document.getElementById("cb");
var rcbElem = document.getElementById("rcb");
addOrAttachListener(cbElem, "click", function() {
rcbElem.checked = cbElem.checked;
}, false);
}, false);
<label>Click Me!
<input id="cb" type="checkbox" />
</label>
<label>Reflection:
<input id="rcb" type="checkbox" />
</label>
İşte bir düğme ile işaretlenmiş ve işaretlenmemiş kod:
var set=1;
var unset=0;
jQuery( function() {
$( '.checkAll' ).live('click', function() {
$( '.cb-element' ).each(function () {
if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
});
set=unset;
});
});
Güncelleme: İşte attr yerine yeni Jquery 1.6+ prop yöntemini kullanan aynı kod bloğu:
var set=1;
var unset=0;
jQuery( function() {
$( '.checkAll' ).live('click', function() {
$( '.cb-element' ).each(function () {
if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
});
set=unset;
});
});
.attr
yerine kullanıyor .prop
.
elementObject
JQuery ile özniteliğin kontrol edilmesini sağlayabiliriz :
$(objectElement).attr('checked');
Bunu tüm jQuery sürümleri için hatasız olarak kullanabiliriz.
Güncelleme: Jquery 1.6+, attr yerine kullanılan yeni prop yöntemine sahiptir, örneğin:
$(objectElement).prop('checked');
.attr
yerine kullanıyor .prop
.
PhoneGap'i uygulama geliştirme yaparken kullanıyorsanız ve düğmede anında göstermek istediğiniz bir değeriniz varsa, bunu yapmayı unutmayın
$('span.ui-[controlname]',$('[id]')).text("the value");
Açıklık olmadan, ne yaparsanız yapın arayüzün güncellenmeyeceğini buldum.
Birden fazla onay kutusunu işaretlemek için kod ve demo İşte ...
http://jsfiddle.net/tamilmani/z8TTt/
$("#check").on("click", function () {
var chk = document.getElementById('check').checked;
var arr = document.getElementsByTagName("input");
if (chk) {
for (var i in arr) {
if (arr[i].name == 'check') arr[i].checked = true;
}
} else {
for (var i in arr) {
if (arr[i].name == 'check') arr[i].checked = false;
}
}
});
$("#check")
ham DOM API çağrılarıyla karıştırmak document.getElementsByTagName("input")
benim için yetersiz görünüyor, özellikle de buradaki for
döngülerin kullanılarak önlenebileceği göz önüne alındığında .prop()
. Ne olursa olsun bu yeni bir şey katmayan başka bir geç cevaptır.
Başka bir olası çözüm:
var c = $("#checkboxid");
if (c.is(":checked")) {
$('#checkboxid').prop('checked', false);
} else {
$('#checkboxid').prop('checked', true);
}
@ Livefree75'in dediği gibi:
jQuery 1.5.x ve altı
$ .Fn nesnesini yeni yöntemlerle de genişletebilirsiniz:
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").attr("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").removeAttr("checked");
}
});
}(jQuery));
Ancak jQuery'nin yeni sürümlerinde böyle bir şey kullanmalıyız:
jQuery 1.6+
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").prop("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").prop("checked",false);
}
});
}(jQuery));
Sonra sadece şunları yapabilirsiniz:
$(":checkbox").check();
$(":checkbox").uncheck();
Mobil cihaz kullanıyorsanız ve arayüzün onay kutusunu işaretlenmemiş olarak güncellemesini ve göstermesini istiyorsanız, aşağıdakileri kullanın:
$("#checkbox1").prop('checked', false).checkboxradio("refresh");
JQuery belgelerinde belirtildiği gibi, Internet Explorer 9'dan önce Internet Explorer'daki bellek sızıntılarına dikkat edin :
Sürüm 9'dan önceki Internet Explorer'da, bir DOM öğesi özelliğini basit bir temel değerden (sayı, dize veya boole) başka bir değere ayarlamak için .prop () kullanılması, özellik kaldırılmazsa (.removeProp (kullanılarak) bellek sızıntılarına neden olabilir. )) DOM öğesi belgeden kaldırılmadan önce. Bellek sızıntısı olmadan DOM nesnelerinde değerleri güvenli bir şekilde ayarlamak için .data () kullanın.
.prop('checked',true)
.
Kontrol etmek ve işaretini kaldırmak için
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
$('controlCheckBox').click(function(){
var temp = $(this).prop('checked');
$('controlledCheckBoxes').prop('checked', temp);
});
Bu muhtemelen en kısa ve en kolay çözümdür:
$(".myCheckBox")[0].checked = true;
veya
$(".myCheckBox")[0].checked = false;
Daha da kısa:
$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;
İşte bir de jsFiddle .
Sade JavaScript çok basit ve çok daha az genel gider:
var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
elements[i].checked = true;
}
Bunu kullanarak çalıştıramadım:
$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');
Hem doğru hem de yanlış onay kutusunu işaretler. Benim için işe yarayan şuydu:
$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', ''); // For unchecking
true
ve false
değildir 'true'
ve 'false'
?
'false'
boolean değerine dönüştürüldü true
- sonuç olarak - boş dize false
böylece "çalıştı" olarak değerlendirir. Bkz bu keman Demek istediğim de örneğin.
Gibi bir onay kutusunu işaretlediğinizde;
$('.className').attr('checked', 'checked')
bu yeterli olmayabilir. Ayrıca aşağıdaki işlevi çağırmalısınız;
$('.className').prop('checked', 'true')
Özellikle onay kutusu işaretli niteliğini kaldırdığınızda.
İşte tam cevap jQuery kullanarak
Test ediyorum ve% 100 çalışıyor: D
// when the button (select_unit_button) is clicked it returns all the checed checkboxes values
$("#select_unit_button").on("click", function(e){
var arr = [];
$(':checkbox:checked').each(function(i){
arr[i] = $(this).val(); // u can get id or anything else
});
//console.log(arr); // u can test it using this in google chrome
});
JQuery'de,
if($("#checkboxId").is(':checked')){
alert("Checked");
}
veya
if($("#checkboxId").attr('checked')==true){
alert("Checked");
}
JavaScript'te,
if (document.getElementById("checkboxID").checked){
alert("Checked");
}
.attr
yerine kullanıyor .prop
.