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

moh*_*ari 7 javascript checkbox jquery

我有一个多复选框以相同的ATTR name一样"Check",但每个复选框有不同的价值

所以我必须创建一个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);
                });
        }
    });
}); 
Run Code Online (Sandbox Code Playgroud)

这是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++;
    }
  ?>
Run Code Online (Sandbox Code Playgroud)

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

Cod*_*ver 2

在下面一行中:

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

您正在获取选中复选框的值,并且您已经将选中的条件放入 if 条件中。所以我的建议是更换

NewsPaperId= $('input[name="Check"]:checked').val();
Run Code Online (Sandbox Code Playgroud)

上面一行和下面一行:

NewsPaperId= $(this).val();
Run Code Online (Sandbox Code Playgroud)

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

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

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