1. ホーム
  2. jquery

[解決済み] チェックボックスのクリック時にチェックされていないことを確認する - jQuery

2023-03-22 01:54:15

質問

チェックボックスをクリックしたときに、チェックが外れたかどうかを確認したいのです。この理由は、私はユーザーがチェックボックスのチェックを外したときに検証を行いたいからです。なぜなら、少なくとも1つのチェックボックスがチェックされている必要があるからです。ですから、もしユーザーが最後の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');
});

しかし、これでは常に「unchecked」メッセージが表示されます。私が期待していたものではありませんが...

デモです。 http://jsfiddle.net/tVM5H/

というわけで、最終的には以下のようなものが必要です。

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

しかし、明らかにこれはうまくいきません。というのも、「if」文が一つあればいいところを、不要な「else」文が出来てしまうからです。

まず最初に、これはjQueryのバグなのでしょうか?私にとっては予期しない動作です。そして第二に、どなたか良い代替案があれば教えてください。

どのように解決するには?

これを試してみてください。

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

デモ