2016-10-22 154 views
0

這是我的第一個stackoverflow問題。 我正在處理簡單的ajax代碼。這個想法是,我有多個複選框。當你點擊複選框時,jquery腳本需要取得按下的複選框的值併發送一個jax請求。JQuery只返回一個值

問題是,無論我按下的值是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的()''而不是$(」。複選框「)。attr(」value「)' – Pointy

+0

謝謝先生。現在正在工作。 –

回答

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

適用於具有你所經歷的行爲的複選框類和結果的所有元素。您需要使用

$(this).val() 

$(this).attr("value") 

代替。此外,爲了加快您的腳本,裏面change就可以計算出$(this)這樣的:

var that = $(this); 

,並在以後使用that.val()that.is(':checked')