2016-10-22 12 views
0

これは私の最初のstackoverflow質問です。 私は単純なAjaxコードを作成しています。アイデアは、私は複数のチェックボックスを持っているということです。チェックボックスをクリックすると、jqueryスクリプトは押されたチェックボックスの値を受け取り、ajaxリクエストを送信する必要があります。JQueryはただ1つの値を返します

問題は、チェックボックスを押したときに値が最初のチェックボックス値である321であることです。私はjavascriptに新しいので、ご質問が愚かなものであればごめんなさい。ありがとうございました。

 </title> 
    </head> 
    <body> 

    <form action=""> 
    <input id="321" class="checkbox" type="checkbox" name="vehicle" value="321" />I have a car<br> 
     <input id="123" class="checkbox" type="checkbox" name="vehicle" value="123" /> I have a bike<br> 

     <input type="submit" value="Submit"/> 
    </form> 

    <span></span> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     var sum = 0; 
     $(".checkbox").change(function(){ 
      if($(this).is(':checked')) { 
       var str = $(".checkbox").attr("value"); 
       $.get("demo.php?item="+str, function(data, status){ 
        sum = sum + parseInt(data); 
        $("span").html(sum); 
       }); 
      }else{ 
      var str = $(".checkbox").attr("value"); 
      $.get("demo.php?item="+str, function(data, status){ 
       sum = sum - parseInt(data); 
       $("span").html(sum); 
      }); 
     } 
    }); 

}); 

</body> 
</html> 
+1

'$(この).valを使用します。また、changeの内側にあなたは、このような$(this)を計算することができ、あなたのスクリプトをスピードアップします。チェックボックス ")。attr(" value ")' – Pointy

+0

ありがとうございます。それは今働いている。 –

答えて

1
$(".checkbox").attr("value") 

あなたが経験してきた行動のチェックボックスクラスと結果を持つすべての要素に適用されます。あなたは

$(this).val() 

または

代わり
$(this).attr("value") 

を使用する必要があります。

var that = $(this); 

を、後に() `の代わりに` $(」のthat.val()that.is(':checked')

関連する問題