jQueryはチェックボックスが選択されているかどうかを確認します


126

個別のチェックボックスが選択されているかどうかを確認する方法を知っています。

しかし、私は次の問題を抱えています-フォームIDが与えられた場合、チェックボックスのいずれかが選択されているかどう(つまり、1つ以上)を確認する必要があり、も選択されていないかどうかを確認する必要があります。基本的に、私はこれら2つの質問に答える2つの個別の機能が必要です。助けていただければ幸いです。ありがとう!

実際には、も選択されていない場合に通知する関数が必要です。これを知ることは他の質問に答えます。


回答:


246

あなたはこのようなものを使うことができます

if ($("#formID input:checkbox:checked").length > 0)
{
    // any one is checked
}
else
{
   // none is checked
}

8
$("#formID input:checkbox:checked").lengthここでも十分でしょう
デイモン

@Damon if ($("#formID input:checkbox:checked").length){}>00は誤った値なので、(なしで)十分であると思います。james.padolsey.com/ javascript / truthy
Adrien Be

11
jQueryは:checkboxセレクターに関して言っています:For better performance in modern browsers, use [type="checkbox"]api.jquery.com / checkbox - selector を参照してください-ラジオボタンbtwと同じ、use [type="radio"] rather than :radio api.jquery.com / radio
Adrien Be

27

jQuery .isは指定されたすべての要素をテストし、それらの少なくとも1つがセレクターと一致する場合にtrueを返します。

if ($(":checkbox[name='choices']", form).is(":checked"))
{
    // one or more checked
}
else
{
    // nothing checked
}

動作するis()ようですが:checked、@ rahulの回答に示されているように、セレクターに直接アクセスする方が適切なようです。is()は、「コールバック内」の場合により有用であるようです。api.jquery.com/ isを参照してください。それとも何か不足していますか?
Adrien Be

いいえ、それはほとんどドキュメントに書かれていることです-要素が指定された属性と一致しているかどうかを確認します。それをフィルターとして適用してから、少なくとも1つのアイテムが結果に表示されるかどうかを確認することは同じですが、長くてあまり表現力がありません。
Michael Logutov 2014年

+1は、.is(":checked")あなたの解決策がより表現力があるという事実のためですが、残りについてはわかりません。
Adrien Be

つまり$("form input[type=checkbox]").is(":checked")、よりシンプルでより一般的なアプローチかもしれません。
Adrien Be

@AdrienBe使用isすると、見つかるとすぐに停止するため、パフォーマンスが向上する可能性があります。
ChrisW 2016

8

あなたはこれを行うことができます:

  if ($('#form_id :checkbox:checked').length > 0){
    // one or more checkboxes are checked
  }
  else{
   // no checkboxes are checked
  }

どこ:

  • :checkbox フィルターセレクターはすべてのチェックボックスを選択します。
  • :checked チェックされたチェックボックスを選択します
  • length そこにチェックされたものの数を与えます

jQueryのは、について述べている:checkboxセレクタ:For better performance in modern browsers, use [type="checkbox"]、参照api.jquery.com/checkbox-selector
エイドリアンはして

6

これは、チェックボックスのリストのチェックボックスが変更されたかどうかを確認するために使用したものです。

$('input[type="checkbox"]').change(function(){ 

        var itemName = $('select option:selected').text();  

         //Do something.

});     

6

「長さ」を使用せずに、次のようにすることができます。

if ($('input[type=checkbox]').is(":checked")) {
      //any one is checked
}
else {
//none is checked
}

3

.lengthここで簡単に戻ることができます:

function areAnyChecked(formID) {
  return !!$('#'+formID+' input[type=checkbox]:checked').length;
}

これは、指定されたフォームでチェックボックスを探し、存在するかどうかを確認し:checked、存在するtrue場合はそれを返します(それ以外の場合は長さが0になるため)。少しわかりやすくするために、ブール値に変換されていないバージョンを次に示します。

function howManyAreChecked(formID) {
  return $('#'+formID+' input[type=checkbox]:checked').length;
}

これにより、チェックされた数が返されます。


3

ラフルの答えはあなたの質問に最適です。とにかく、チェックするチェックボックスのグループがあり、フォームのすべてのチェックボックスではない場合は、チェックボックスに移動できます。

たとえば、クラス名test_checkなど、チェックするすべてのチェックボックスにクラス名を入力すると、グループに属するチェックボックスがオンになっているかどうかを確認できます。

$("#formID .test_check:checked").length > 0

返された場合true、1つ以上のチェックボックスがクラス名test_checkでチェックされ、返されfalseた場合はチェックされていないと仮定します。

それが誰かを助けることを願っています。ありがとう:)-


1

これがこの問題を解決する最良の方法です。

  if($("#checkbox").is(":checked")){

  // Do something here /////

  };

StackOverflowへようこそ。なぜそれが問題を解決するための「最善の方法」であるのかがはっきりしないので、おそらくあなたはあなたの答えをもう少し説明することができます。
dddJewelsbbb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.