2014-09-28 139 views
1

我有一个表如下选中/取消选中该复选框

<tbody> 
<?php 
foreach($redeemSales as $sale) 
{ 
    ?> 
    <tr> 
     <td><form><input type="checkbox" name="userSelection" ></form></td> 
     <td><?php echo $sale["ring"];?></td> 
     <td><?php echo formatFullDate($sale["soldDate"]) ?></td> 
     <td><?php echo $sale["saleType"]; ?></td> 
     <td> 
      <div class="col-lg-8"> 
       <select name="type" class="form-control redeemOptions"> 
       <option value="None">None</option> 
       <option value="CD">CherieDori Credit (CD)</option> 
       <option value="Amex">American Express Card (Amex)</option> 
      </select> 
     </div> 
     </td> 
    </tr> 
<?php }?> 
</tbody> 

我想要的是,当我选择让我们说的是“无”的默认值。

当我选择第二个选项“CD”时,自动选中复选框get。

如果我更改为任何其他选项,则应该自动取消选择。

有多行,我只希望相应的复选框被选中。

以下是我在javascript

$(document).ready(function(e) 
{  
    $('.redeemOptions').change(function() 
    { 
     var menuChanged = $(this); 

     parentForm = menuChanged.closest('form'); 
     correspondingCheckbox = parentForm.find('input[name=userSelection]'); 

     if(menuChanged.val() == 'CD') 
     {   
      correspondingCheckbox[0].checked = true; 
     } 
     else 
     { 
      correspondingCheckbox[0].checked = false; 
     } 
    }); 
}); 

现在首先correspondingCheckbox.checked = true;不工作都试过了。我怎样才能弄清楚它的正确性。其次,如果我按下按钮,我想要获得所选行的所有行的ID。 E.g第一排,第三排等

我有表

<a class="btn btn-primary" href="actions.php?j=5&saleIds=x,x,x,x">Redeem Sales &rarr;</a> 

我想给我选择的行的所有销售IDS下方的按钮。 foreach($redeemSales as $sale)销售和它的销售ID可以通过$sale['id'].得到我也许需要,当我将复选框更改为true时将它们添加到数组中,然后在单击herf按钮上方时发送它。我将如何在javascript中进行选择检查或可能点击按钮时,它会检查所有选中的复选框并制作一个列表并传递给actions.php?

回答

1

问题可能是遍历了复选框。基于上面的标记,你可以做这样的事情:

$(document).ready(function(){ 
 
    $('.redeemOptions').on('change', function(){ 
 
     var value = $(this).val(); 
 
     var status = (value == 'CD') ? true : false; 
 
     $(this).closest('tr').children()[0].childNodes[0].checked = status; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
<table> 
 
<tbody> 
 
    <tr> 
 
    <td><input type="checkbox" name="userSelection[]" ></td> 
 
    <td>ring1</td> 
 
    <td>2014-09-28</td> 
 
    <td>type1</td> 
 
    <td> 
 
     <div class="col-lg-8"> 
 
      <select name="type" class="form-control redeemOptions"> 
 
      <option value="None">None</option> 
 
      <option value="CD">CherieDori Credit (CD)</option> 
 
      <option value="Amex">American Express Card (Amex)</option> 
 
     </select> 
 
    </div> 
 
    </td> 
 
</tr> 
 
<tr> 
 
    <td><input type="checkbox" name="userSelection[]" ></td> 
 
    <td>ring2</td> 
 
    <td>2014-09-28</td> 
 
    <td>type2</td> 
 
    <td> 
 
     <div class="col-lg-8"> 
 
      <select name="type" class="form-control redeemOptions"> 
 
      <option value="None">None</option> 
 
      <option value="CD">CherieDori Credit (CD)</option> 
 
      <option value="Amex">American Express Card (Amex)</option> 
 
     </select> 
 
    </div> 
 
    </td> 
 
</tr> 
 
</tbody> 
 
</table> 
 
</form>

编辑:

你也应该把销售ID上的复选框:

<td><input type="checkbox" name="salesIds[]" value="<?php echo $sale['id']; ?>" /></td> 

然后,在JS:

$('.selection').on('click', function(){ 
    var checked = $('input[name="salesIds[]"]:checked').serialize(); 
    window.location.href = 'actions.php?j=5&' + checked; 
}); 

终于在PHP上去处理这个,salesIds将是一个数组:

$_GET['salesIds'] // is now an array 
+0

完美,谢谢你。还有第二部分问题。我怎么可以在按钮按下,获得所有行列IDS,我是第一行还是第二。 Mabye我可以创建一个全局数组,当我存储javascript时,如果语句为true。但我怎么能这样做 – 2014-09-28 04:42:00

+0

@MuhammadUmar你可以解释一下,不明白你的意思,你可以举个例子吗? – Ghost 2014-09-28 04:43:04

+0

请检查最后的编辑 – 2014-09-28 04:59:30