jQuery giriş türü olup olmadığını kontrol edin onay kutusu?


151

Bir girişin onay kutusu olup olmadığını ve aşağıdakilerin çalışmadığını öğrenmek istiyorum:

$("#myinput").attr('checked') === undefined

Tekrar teşekkürler!

Yanıtlar:


333

Sahte seçiciyi :checkboxjQuery isişlevine bir çağrı ile kullanabilirsiniz :

$('#myinput').is(':checkbox')

1
Her zaman kullandığım yöntem budur.
Topher Fangio

Bundan daha basit olamazsın.
KyleFarris

9
Bunun için selektör motorunu neden kullanmalıyım? Tamamen gereksiz.
Tim Down

7
@Tim Down Aynı şeyi başarmanın daha etkili yolları olabileceğini düşünüyorum. Kod çok okunabilir olduğundan bu sürümü seviyorum varsayalım.
Ken Browning

2
@KenBrowning: Yeterince adil. Ben 2009 yılında oldukça anti-jQuery, özellikle her şey için körü körüne jQuery kullanarak yaygın SO tutum; görüşlerim biraz mellowed ve mümkün olsaydı benim downvote geri. Ancak, hala bir noktaya geldiğimi düşünüyorum. Alternatif (inkar edemediğim daha ayrıntılı):var myInput = $("myinput")[0]; var isCheckbox = myInput.nodeName.toLowerCase() == "input" && myInput.type == "checkbox";
Tim Down

22
>>> a=$("#communitymode")[0]
<input id="communitymode" type="checkbox" name="communitymode">
>>> a.type
"checkbox"

Veya, daha fazla jQuery tarzı:

$("#myinput").attr('type') == 'checkbox'

Tamamen geçerli. En basit değil.
KyleFarris

6
Kullanımı tamamen uygun olmayan jQuery'nin seçici motorunu kullanarak kaydeder. İlk varyant çok daha iyidir, çünkü jQuery'nin karışık attr()işlevinin herhangi bir şeyi karıştırması olasılığını ortadan kaldırır .
Tim Down

3
@Tim Aşağı doğru - Değiştirmek gerekir attr()için prop()afaik. attr()her zaman tarayıcıdan "gerçek" özellik değerini (yani işaretli veya işaretsiz) almaz. Dürüst olmak gerekirse neden böyle olduğundan emin değilim, ama bunu bir süre önce öğrendim.
thekingoftruth

1
Chome'de ikinci örneğiniz büyük / küçük harfe duyarlıdır: jsfiddle.net/gtza0uuL . .Prop ile değil, ama bunun garanti edilip edilemeyeceğini bilmiyorum. Not: 'type' tanımsız olabileceğinden .toLowerCase () işlevini de uygulayamazsınız.
xr280xr

10
$("#myinput").attr('type') == 'checkbox'

6

Bir jQuery çözümü, bir jQuery çözümüne çok benzer:

document.querySelector('#myinput').getAttribute('type') === 'checkbox'

2

Bu işlevi kullanın:

function is_checkbox(selector) {
    var $result = $(selector);
    return $result[0] && $result[0].type === 'checkbox';
};

Veya bu jquery eklentisi:

$.fn.is_checkbox = function () { return this.is(':checkbox'); };

0
$('#myinput').is(':checkbox')

onay kutusunun işaretli olup olmadığını tespit etmek için sorunu çözmek için tek iş budur. Doğru veya yanlış döndürür, saatlerce arar ve her şeyi denerim, şimdi işi net olmak için EDG'yi tarayıcı ve W2UI olarak kullanıyorum


Sorularınıza ve cevaplarınıza kodu yapıştırırken kod refactor'u kullanmayı unutmayın.
Andres Felipe
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.