2015-12-01 62 views
1

已更新
我正在使用while循環顯示覆選框,複選框的值是金額。當通過ajax函數檢查複選框時,代碼現在可以顯示總值。在表單提交期間,我如何獲取選中值的$ ID?由於複選框的名稱不是數組,我不知道如何以其他方式進行操作。請幫助:「(在此先感謝
PHP:ajax獲取這是一個數組的複選框名稱

<table> 
<form name="listForm"> 
<?php 
while($row=mysql_fetch_assoc($result)){ 
$ID = $row['ID']; 
$amount = $row['amount']; 
?> 
<tr> 
<td><input type="checkbox" name="payID" data-payment-id="<?php echo $ID;?>" value="<?php echo $amount;?>" onclick="calculate();"></td> 

</tr> 
<?php 
}?> 
</table> 
</form> 

的javascript:

function calculate(){ 
document.listForm.payID.value = ''; 
var sum = 0; 
var count = 0; 
for (i=0;i< document.listForm.payID.length ; i++) { 
if (document.listForm.payID[i].checked) { 
sum = sum + parseInt(document.listForm.payID[i].value); 
count = count + 1; 
} 
} 

document.getElementById('payable').innerHTML = "Total record chosen= "+ count +"<br>Total amount= " + sum + "<br>"; 
} 
+0

'document.listForm.payID [i] .value'但payID'不是數組 - 'name =「payID」' – Sean

+0

我改變了一下,現在我可以顯示覆選框時的總值檢查,但我不能得到表格提交後的$ ID – Nichole

+0

我有點困惑... AJAX在這裏發揮作用?還有,你想如何將data-payment-id存儲在JavaScript數組中或者什麼? –

回答

0

您需要從點擊的複選框中獲取「data-payment-id」屬性。我會將它們存儲在一個數組中,然後json將它串起來發送到您的表單中。

的Javascript:

function calculate(){ 
     document.listForm.payID.value = ''; 
     var sum = 0; 
     var count = 0; 
     var idList = []; 
     for (i=0;i< document.listForm.payID.length ; i++) { 
      if (document.listForm.payID[i].checked) { 
       sum = sum + parseInt(document.listForm.payID[i].value); 
       count = count + 1; 
       idList.push(document.listForm.payID[i].getAttribute('data-payment-id')); 
      } 
     } 

     document.getElementById('sum').value = sum; 
     document.getElementById('count').value = count; 
     document.getElementById('idList').value = JSON.stringify(idList); 
     return true; 
    } 

然後換你的方式,更新它有隱藏的輸入和的onsubmit功能 - 這裏是我用什麼測試:

HTML表格:

<form name="listForm" action="aoeu.php" method="post" onsubmit="calculate()"> 
    <input type='checkbox' name="payID" value='1' data-payment-id='aaa'> 1<br> 
    <input type='checkbox' name="payID" value='2' data-payment-id='bbb'> 2<br> 
    <input type='checkbox' name="payID" value='3' data-payment-id='ccc'> 3<br> 
    <input type='hidden' id='sum' name='sum'> 
    <input type='hidden' id='count' name='count'> 
    <input type='hidden' id='idList' name='idList'> 
    <button type='submit'>Submit</button> 
</form> 

然後,只需確保json_decode()的ID列出你在你的PHP文章。

+0

謝謝!這工作!但我如何從PHP腳本獲取數組idList? – Nichole

+0

@Nichole它真的取決於你的設置。您是否想通過常規方式或通過AJAX提交表單? –

+0

只是以正常的方式提交表格 – Nichole

0

我現在已經更新在你的PHP代碼修改這一行:

<input type="checkbox" name="payID" data-payment-id="<?php echo $ID;?>" id="payment_id[]" onClick="calculate()" value="<?php echo $amount;?>" > 

而且你的Javascript功能:

function calculate(){ 
    var sum = 0; 
    var count = 0; 
    var a1=document.listForm['payment_id[]']; 
    for(i=0;i<a1.length;i++){ 
     if (a1[i].checked){ 
      sum += parseInt(a1[i].value); 
      count = count + 1; 
     } 


    } 

    document.getElementById('payable').innerHTML = "Total record chosen= "+ count +"<br>Total amount= " + sum + "<br>"; 
} 
+0

如果我理解了這個問題,我認爲這不會起作用。它只會給你點擊的元素的$ ID(payID),而不是當前標記的所有複選框。這意味着在取消選擇時,它會說這是選定的ID。 –