如何从具有相同名称的Multi CheckBox中获取值

How to get value from Multi CheckBox with the same name

我有一个与 "Check" 具有相同属性 name 的多复选框,但每个复选框都有不同的值

所以我必须创建一个 jQuery 代码,如果我按下复选框,它将在 php 中执行某些操作,例如此代码

$(document).ready(function(){
   var NewsPaperId;
   var UserId;
    var CategoryId;
    $("input[type='checkbox']").click(function() {

        if ($(this).is(':checked')) {
            NewsPaperId= $('input[name="Check"]:checked').val();
            UserId= $(".userId").val();
            CategoryId= $(".CategoryId").val();
            alert(NewsPaperId);
            $.post("AddAndDelete.php",
                {
                    Add:1,
                    UserId: UserId,
                    NewsPaperId: NewsPaperId,
                    CategoryId:CategoryId
                },
                function(data, status){
                    alert("Data: " + data + "\nStatus: " + status);
                 });
         } else {
            NewsPaperId= $('input[name="Check"]:checked').val();
            UserId= $(".userId").val();
            CategoryId= $(".CategoryId").val();

            alert(NewsPaperId);

            $.post("AddAndDelete.php",
                {
                    Delete:1,
                    UserId: UserId,
                    NewsPaperId: NewsPaperId,
                    CategoryId:CategoryId
                },
                function(data, status){
                    alert("Data: " + data + "\nStatus: " + status);
                });
        }
    });
}); 

这里是 php

创建的复选框代码
<?php

    $i=1;
    $sql = "SELECT NewsPaperStatus.*,UserChoises.*"
         . " FROM NewsPaperStatus"
         . " LEFT JOIN UserChoises"
         . " ON NewsPaperStatus.Id=UserChoises.NewsPaperId"
         . " WHERE NewsPaperStatus.CategoryId=$Categoryid";

    $query = mysql_query($sql);
    while ($row = mysql_fetch_assoc($query)){
      if($i==1){

          if($row['Id']==$row['NewsPaperId']){
             echo '<tr><th><img src="../images/NewsPaper/'.$row['Logo'].'"/></th><th><a href="">'.$row['Name'].'</a></th><th><input class="check" type="checkbox" checked="checked" name="Check" value="'.$row['Id'].'"/></th>';
           }else{
               echo '<tr><th><img src="../images/NewsPaper/'.$row['Logo'].'"/></th><th><a href="">'.$row['Name'].'</a></th><th><input class="check" type="checkbox" name="Check" value="'.$row['Id'].'"/></th>';
             }
         }
         else if($i==2){
             if($row['NewsPaperId']==$row['Id']){
                 echo '<th><img src="../images/NewsPaper/'.$row['Logo'].'"/></th><th><a href="">'.$row['Name'].'</a></th><th><input class="check" type="checkbox" checked="checked" name="Check" value="'.$row['Id'].'"/></th>';
             }else{
                echo '<th><img src="../images/NewsPaper/'.$row['Logo'].'"/></th><th><a href="">'.$row['Name'].'</a></th><th><input class="check" type="checkbox" name="Check" value="'.$row['Id'].'"/></th>';
              }
           }
           else if($i==3){
             if($row['NewsPaperId']==$row['Id']){
                echo '<th><img src="../images/NewsPaper/'.$row['Logo'].'"/></th><th><a href="">'.$row['Name'].'</a></th><th><input class="check" type="checkbox" checked="checked" name="Check" value="'.$row['Id'].'"/></th></tr>';
             }else{
               echo '<th><img src="../images/NewsPaper/'.$row['Logo'].'"/></th><th><a href="">'.$row['Name'].'</a></th><th><input class="check" type="checkbox" name="Check" value="'.$row['Id'].'"/></th></tr>';
            }

       $i=0;
       }
     $i++;
    }
  ?>

所以问题是当我按下任何复选框时它的工作正常但是当我取消选中另一个复选框时取复选框的最后一个值((如果我按下复选框值 16 并按下复选框值 17 所以它工作正常,但是当我想取消选中值 16 的复选框时,它的值为 17,它取我选中的复选框的最后一个值。

在下一行中:

if ($(this).is(':checked')) {
   NewsPaperId= $('input[name="Check"]:checked').val();

你取的是checked checkbox的值,你已经把checked的条件放到了if条件中。所以我的建议是更换

NewsPaperId= $('input[name="Check"]:checked').val();

上一行和下一行:

NewsPaperId= $(this).val();

而在其他部分,您需要检查是否有任何选中的复选框。这是它的代码:

else {
    $('input[name="Check"]').each(function(){
        if($(this).is(':checked')){
           NewsPaperId= $(this).val();
        }
    });
    if(NewsPaperId != ''){ //do your stuff}

这里是制作if条件的原因。原因是如果用户单击已选中的复选框而未选中其他复选框,则 NewsPaperId 的值将为空白,否则如果将采用将被选中的其他复选框的值。