2014-09-28 218 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