Проверьте, не установлен ли флажок на click - 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');
});

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

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

Так что в конце концов мне нужно что-то вроде:

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

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

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

8 66

8 ответов:

попробуйте это:

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

демо

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

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

или

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

jQuery для проверки проверено? Правда?

if(!this.checked) {

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

<script type="text/javascript">

 if(jQuery('input[id=input_id]').is(':checked')){
  // Your Statment
 }else{
  // Your Statment
 }

 OR

 if(jQuery('input[name=input_name]').is(':checked')){
  // Your Statment
 }else{
  // Your Statment
 }

</script>

код взят отсюда : http://chandreshrana.blogspot.in/2015/10/how-to-check-if-checkbox-is-checked-or.html

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

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

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

ответ уже размещенные .Но мы можем использовать 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');
    });
});

, это

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

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