Флажок ввода всегда возвращает false - PullRequest
3 голосов
/ 19 марта 2012

У меня есть следующий код:

HTML

<div id='foo'>
    <input type='checkbox' value='english' name='bar[english]' />
    <input type='checkbox' value='spanish' name='bar[spanish]' />

    <button type='button' class='button'>Me!</button>
</div>​

JavaScript (jQuery)

$('.button').click(function() {
    status = '';
    $('#foo input[name*="bar"]').each(function() {
        status += $(this).val() + ': ' + $(this).is('checked') + ".\n";
    });
    alert(status);
});

http://jsfiddle.net/pCmXJ/

Вы знаете, скажите мне, почему два флажка всегда возвращают false? Спасибо.

Ответы [ 5 ]

8 голосов
/ 19 марта 2012

Возможно, потому что вам нужен селектор :checked :

$(this).is(":checked") // <-- Note the colon (:) before "checked"

Пример: http://jsfiddle.net/nht6w/

2 голосов
/ 19 марта 2012

Или это:

$(this).attr("checked")
1 голос
/ 19 марта 2012

Потому что вы проверяете, является ли элемент input элементом checked, что, разумеется, не является элементом input (а элементов checked нет). Используйте псевдо-селектор :checked :

$(this).is(':checked')
1 голос
/ 19 марта 2012

Вам нужно использовать селектор :checked, а не checked

status += $(this).val() + ': ' + $(this).is(':checked') + ".\n";
1 голос
/ 19 марта 2012

должно быть $(this).is(':checked')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...