jQuery memeriksa apakah inputnya adalah ketik kotak centang?


151

Saya ingin mengetahui apakah input adalah kotak centang atau tidak, dan yang berikut ini tidak berfungsi:

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

Terima kasih sekali lagi!

Jawaban:


333

Anda dapat menggunakan pemilih-semu :checkboxdengan panggilan ke isfungsi jQuery :

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

1
Ini adalah metode yang selalu saya gunakan.
Topher Fangio

Anda benar-benar tidak bisa mendapatkan yang lebih sederhana dari itu.
KyleFarris

9
Mengapa menggunakan mesin pemilih untuk ini? Sama sekali tidak perlu.
Tim Down

7
@Tim Down Saya berpendapat bahwa mungkin ada cara yang lebih efisien untuk mencapai hal yang sama. Saya kira saya suka versi ini karena kodenya sangat mudah dibaca.
Ken Browning

2
@ KenBrowning: Cukup adil. Saya cukup anti-jQuery pada tahun 2009, khususnya sikap SO lazim menggunakan jQuery untuk semuanya; pandangan saya sedikit melunak sejak itu dan saya akan membatalkan downvote saya jika mungkin. Namun, saya masih berpikir saya ada benarnya. Alternatif (yang tidak dapat saya tolak adalah lebih bertele-tele):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"

Atau, lebih banyak gaya jQuery:

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

Sangat valid. Bukan yang paling sederhana.
KyleFarris

6
Menghemat menggunakan mesin pemilih jQuery, penggunaannya di sini benar-benar tidak pantas. Varian pertama jauh lebih baik, karena menghindari kemungkinan attr()fungsi jQuery yang membingungkan mengacaukan segalanya.
Tim Down

3
@Tim Down tepat - Anda harus beralih attr()ke prop(), afaik. attr()tidak selalu mendapatkan nilai atribut "nyata" (yaitu dicentang atau tidak) dari browser. Jujur tidak yakin mengapa ini terjadi, tapi saya belajar ini beberapa waktu lalu.
thekingoftruth

1
Di Chome, contoh kedua Anda peka huruf besar-kecil: jsfiddle.net/gtza0uuL . Ini bukan dengan .prop, tapi saya tidak tahu apakah itu bisa dijamin. Catatan: Anda tidak bisa melakukan .toLowerCase () karena 'tipe' mungkin tidak terdefinisi.
xr280xr


6

Solusi non-jQuery sangat mirip dengan solusi jQuery:

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

2

Gunakan fungsi ini:

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

Atau plugin jquery ini:

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

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

ini adalah satu-satunya pekerjaan, untuk menyelesaikan masalah untuk mendeteksi apakah kotak centang dicentang atau tidak. Ini mengembalikan benar atau salah, saya mencari berjam-jam dan mencoba semuanya, sekarang pekerjaannya menjadi jelas saya menggunakan EDG sebagai browser dan W2UI


Ingat gunakan refactor kode ketika Anda menempelkan kode dalam pertanyaan dan jawaban Anda.
Andres Felipe
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.