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

时间:2015-04-29 08:11:46

标签: javascript jquery checkbox

我有一个多重复选框,其中包含与name相同的at "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);
                });
        }
    });
}); 

这是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,它选中复选框的最后一个值。

1 个答案:

答案 0 :(得分:2)

在以下行中:

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

您正在使用已选中复选框的值,并且您已将已签入的条件设置为条件。所以我的建议是更换

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

以上一行:

NewsPaperId= $(this).val();

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

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

这是制作if条件的原因。原因是如果用户单击选中复选框并且未选中其他复选框,则NewsPaperId的值将为空,否则将采用将要检查的其他复选框的值。