2009-08-20 19 views
0

ASP.Net Webページのいくつかのチェックボックスを繰り返し処理するJQueryコードを作成しました。$ .each関数に埋め込まれたifステートメントに2つの非常に奇妙な問題があります。コードは自分のチェックボックスをうまく選択しています。コードが$ .each関数を繰り返し実行すると、チェックボックスをオンにしたかどうかによってobjValue.checkedが真または偽であることがはっきり分かります。私が見ている問題は、1)objValue.checkedの値がfalseであってもif文に常に入り込み、2)私のavailableInstalls変数の値が決して減少しないことです。デバッグモードでは、 "availableInstalls = availableInstalls - 1"のコード行にヒットします。誰でもこの動作を引き起こしている可能性があることを知っていますか?JQuery ifステートメント

 $(document).ready(function() { 
      $(".installsoftwarecb").click(function() { 

       var availableInstalls = 10; 

       var checkBoxes = $(".installsoftwarecb input[type='checkbox']"); 
       $.each(
       checkBoxes, function(intIndex, objValue) { 

        if (objValue.checked) { 
         availableInstalls = availableInstalls - 1; 
        } 
       }); 
      }); 
     }); 

答えて

3

の。

$(document).ready(function() { 
     $("#button").click(function() { 

      var availableInstalls = 10; 

      $("input:checkbox").each(function() { 

       if (this.checked) { 
        availableInstalls = availableInstalls - 1; 
       } 
      }); 
      alert(availableInstalls); 
     }); 
    }); 

か寒いだけの "確認" を使用デモから

var checkBoxes = $(".installsoftwarecb input[type='checkbox']:checked"); 

http://docs.jquery.com/Selectors/checked

+1

セレクタは動作しますが、実際に入力する必要があります:チェックボックス:チェックされていますが、チェックされているとコンテキスト内のすべての要素がかなり非効率的になります。チェックボックスをチェックボックスに入力することでフィルタリングすることができます:チェックボックス - 大部分の時間は大したことではありませんが、それは単なる良い方法です。 –

+0

他のコメントに書いたとおり、私はあなたに同意し、私は自分の答えを編集しました。個人的には、それは本当に重要だとは思っていませんが、ラジオボタン要素を数えることができるという事実は、HTMLが将来変更されるとバグの可能性があります。 – SolutionYogi

+0

答えを更新していただきありがとうございます。 +1 :) –

-2

あなたのコードで具体的にお試しください。それは条件が偽だった場合でも、あなたの条件ブロックに陥るだろうと本当に奇妙だ

$(document).ready(function() 
    { 
    $(".installsoftwarecb").click(function() 
    { 
     //count number of checked items directly. 
     var availableInstalls = 10 - $('input:checkbox:checked', this).length; 
     alert(availableInstalls); 
    } 
    } 
+0

チェックボックスがオンの場合、objValue.checkedがtrueです。 == trueを追加すると、不要なコードが追加されます。 – nickytonline

0

:代わりにこのような何かを書くことについてif (objValue.checked)書き込みif (ojValue.checked == true)

どう
2

Working Demo

コード:あなただけを開始するためにチェックされた項目を選択してみてください可能性がありセレクタ

$("input:checkbox:checked").length; // number of checked checkboxes 
+0

するべきではありません:チェックボックスは*:チェックボックスと同じですので、常に入力してください。 –

+0

今すぐ更新してください。乾杯 –