クリック時にチェックボックスがチェックされていないかどうかを確認します-jQuery


86

ユーザーがチェックボックスをクリックしたときに、チェックボックスがオフになっていないかどうかを確認したいと思います。これは、ユーザーがチェックボックスをオフにしたときに検証を実行したいためです。少なくとも1つのチェックボックスをオンにする必要があるためです。したがって、最後のチェックを外すと、自動的に再度チェックされます。

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');
});

ただし、これには常に「チェックされていない」メッセージが表示されます。本当に私が期待していたものではありません...

デモ: http //jsfiddle.net/tVM5H/

したがって、最終的には次のようなものが必要になります。

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

しかし、明らかにこれは機能しません。最初の例は使いたくありません。必要なのは「if」ステートメントが1つだけの場合、不要な「else」ステートメントがあるからです。

まず最初に、これはjQueryのバグですか?私にはそれは予期しない振る舞いです。そして第二に、誰かが良い代替案を考えていますか?

回答:



50

すでに投稿された回答は機能します。jQueryを使用したい場合:notこれを行うことができます:

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

または

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

この回答の最初の例は、すべてのオプションの中で最も読みやすいように思われるので、私はそれに投票します。
トビー1ケノービ

5

チェックされているかどうかをチェックするjQuery?本当に?

if(!this.checked) {

かみそりの仕事をするためにバズーカを使用しないでください。


4
jQueryを使用して要素を見つける場合は、次のようになります$(this)[0].checked
Chris

@HoldOffHungerこれはネイティブ入力要素の一部です:developer.mozilla.org/en-US/docs/Web/HTML/Element/input/…jQuery を使用している場合、Chrisはあなたの上のコメントに正しい構文を持っています。
TheZ 2018

@TheZ:いいね!はい、あなたは正しいです、クリスによる答えは良いです。提案:クレジットで答えるためにそれを追加しますか?OPとトップアンサーはどちらも、純粋なjQueryソリューションである$(selector).is( '...')に傾いています。.checked彼らが持っている場所を使用するだけでは.is('checked')、それ自体では機能しません。
holdOffHunger 2018

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


2

この質問に対する答えのいくつかをチェックしてください-私はそれがあなたのものに当てはまるかもしれないと思います:

要素のデフォルトの動作の後にクリック関数を実行する方法

onclick関数のブラウザ実装で矛盾が発生していると思います。イベントが発生する前と後にチェックボックスを切り替えることを選択する人もいます。


これも実際には非常に重要です。
TheZ 2012年

そしてそれが、jQueryがチェックをチェックする理由です。本当に。;)
JoeBrockhaus 2015年

1

回答はすでに投稿されていますが、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');
    });
});

0

このようにしてください

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

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

これはただかもしれませんthis.checked。最初の行はtypeofそこに必要ありません(それは決して発生しませんReferencError)。また、のprop()代わりにを使用する必要がありますattr()。これによりブール値が返され、2番目のブール値も冗長になります。
アレックス2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.