Подтвердить что ты не робот

Убедитесь, что флажок НЕ установлен на клике - jQuery

Я хочу проверить, не снят ли флажок, когда пользователь нажимает на него. Причина этого в том, что я хочу сделать проверку, когда пользователь отключает флажок. Потому что по крайней мере один флажок должен быть проверен. Поэтому, если он отключает последний, он автоматически проверяет себя снова.

С jQuery я могу легко узнать, проверял ли он или нет:

$('#check1').click(function() {
    if($(this).is(':checked'))
        alert('checked');
    else
        alert('unchecked');
});

Но на самом деле я хочу только иметь инструкцию if, которая проверяет, не снят ли флажок.

Итак, я думал, что могу сделать это со следующим кодом:

$('#check2').click(function() {
    if($(this).not(':checked'))
        alert('unchecked');
    else
        alert('checked');
});

Но это всегда будет показывать сообщение "unchecked". Не совсем то, чего я ожидал...

demo: http://jsfiddle.net/tVM5H/

Итак, мне нужно что-то вроде:

$('#check2').click(function() {
    if($(this).not(':checked')) {
        // Got unchecked, so something!!!
    }
});

Но, очевидно, это не сработает. Я скорее не хочу использовать первый пример, потому что тогда у меня будет ненужное выражение "else", когда мне нужен только оператор "if".

Итак, первое, что это ошибка jQuery? Для меня это неожиданное поведение. И, во-вторых, кто-нибудь может найти хорошую альтернативу?

4b9b3361

Ответ 1

Попробуйте следующее:

if(!$(this).is(':checked'))

демо

Ответ 2

Отправленный ответ будет работать. Если вы хотите использовать jQuery: не можете это сделать:

if ($(this).is(':not(:checked)'))

или

if ($(this).attr('checked') == false)

Ответ 3

jQuery для проверки на наличие проверки? Действительно?

if(!this.checked) {

Не используйте базуку для выполнения работы с бритвой.

Ответ 4

$(document).ready(function() {
        $("#check1").click(function() {
            var checked = $(this).is(':checked');
            if (checked) {
                alert('checked');
            } else {
                alert('unchecked');
            }
        });
    });

Ответ 6

Ознакомьтесь с некоторыми ответами на этот вопрос - я думаю, что это может относиться к вашим:

как запустить функцию щелчка после поведения элемента по умолчанию

Я думаю, что вы столкнулись с несогласованностью в реализации браузера функции onclick. Некоторые предпочитают переключать флажок перед запуском события и после него.

Ответ 7

Ответ уже отправлен. Но мы можем использовать jquery таким же образом

демонстрация

$(function(){
    $('#check1').click(function() {
        if($('#check1').attr('checked'))
            alert('checked');
        else
            alert('unchecked');
    });

    $('#check2').click(function() {
        if(!$('#check2').attr('checked'))
            alert('unchecked');
        else
            alert('checked');
    });
});

Ответ 8

Сделайте это так:

if (typeof $(this).attr("checked") == "undefined" )

// To check if checkbox is checked
if( $(this).attr("checked")=="checked")