jQuery перевірити, чи є вхідний прапорець?


151

Я хотів би дізнатися, чи є вхідний прапорець, чи ні, і наступне не працює:

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

Дякую ще раз!

Відповіді:


333

Ви можете використовувати псевдоселектор :checkboxдля виклику isфункції jQuery :

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

1
Це метод, який я завжди використовую.
Topher Fangio

Ви насправді не можете отримати простішого за це.
KyleFarris

9
Навіщо використовувати для цього селекторний двигун? Це зовсім непотрібно.
Тим Даун,

7
@Tim Down Я вважаю, що можуть бути більш ефективні способи досягти того ж самого. Я вважаю, що мені подобається ця версія, оскільки код дуже читабельний.
Кен Браунінг

2
@KenBrowning: Досить справедливо. Я був досить анти-jQuery в 2009 році, особливо поширене ставлення SO до сліпого використання jQuery для всього; мої погляди трохи пом’якшили з того часу, і я скасував би свій голос, якщо це можливо. Однак я все ще думаю, що в мене був пункт. Альтернатива (яку я не можу заперечити, є більш дослідною):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"

Або, більше про стиль jQuery:

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

Прекрасно дійсний. Не найпростіший.
KyleFarris

6
Це економить за допомогою селекторного двигуна jQuery, використання якого тут абсолютно недоцільно. Перший варіант набагато кращий, оскільки уникає будь-якої можливості сплутаної attr()функції jQuery збивати щось.
Тім Даун

3
Вниз @ Тім правильно - ви повинні змінити , attr()щоб prop(), AFAIK. attr()не завжди отримує "реальне" значення атрибута (тобто перевірено чи ні) від браузера. Чесно кажучи, не впевнений, чому це так, але я дізнався про це деякий час назад.
thekingoftruth

1
У Chome ваш другий приклад враховує регістри : jsfiddle.net/gtza0uuL . Це не з .prop, але я не знаю, чи можна це гарантувати. Примітка: ви не можете просто зробити .toLowerCase (), тому що "type" може бути невизначено.
xr280xr


6

Рішення не jQuery дуже схоже на рішення jQuery:

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

2

Використовуйте цю функцію:

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

Або цей плагін jquery:

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

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

це єдина робота, щоб вирішити проблему, щоб виявити, чи поставлений прапорець чи ні. Він повертає істинне чи помилкове, я шукаю його годинами і пробую все, тепер його робота буде зрозумілою, я використовую EDG як браузер і W2UI


Пам’ятайте, що використовуйте рефактор коду, коли вставляєте код у своїх питаннях та відповідях.
Андрес Феліпе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.