Php 在ajax响应后使用jquery单击复选框时获取所选复选框的总和
我需要在ajax响应后使用jquery单击复选框时获取所选复选框的总和Php 在ajax响应后使用jquery单击复选框时获取所选复选框的总和,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我需要在ajax响应后使用jquery单击复选框时获取所选复选框的总和 $('.check:checked').each(function() { }); 如果在加载页面时调用复选框,则上述jQuery函数可以工作 但是我必须在AJAX响应后调用这个函数,因为它不起作用 因此,我尝试使用下面的一个,但不知道如何获得所选复选框值的总和 $('body').on('click', '.check', function(){ } jQuery函数 <script> $(do
$('.check:checked').each(function() { });
如果在加载页面时调用复选框,则上述jQuery函数可以工作
但是我必须在AJAX响应后调用这个函数,因为它不起作用
因此,我尝试使用下面的一个,但不知道如何获得所选复选框值的总和
$('body').on('click', '.check', function(){ }
jQuery函数
<script>
$(document).ready(function(){
$('body').on('click', '.check', function(){
var tot = 5;
$('.check:checked').each(function() {
console.log($(this).val());
tot += $(this).val();
});
console.log(tot);
});
$('#payType').change(function(){
var pType = $(this).val();
var y = $('[name = "year"]').val();
clearRuntimeFunctions();
$('#payType').val(pType);
if(pType != "dntSntReqst"){
$('#ajax_img_lod').show();
$.ajax({
url: 'AJAX_Requst/getOtherPaymt.php',
type: 'POST',
data: {
'pYear': y,
'payType': pType,
},
success: function( data ){
$('#ajax_img_lod').hide();
$('#ajax_response').html(data);
}
});
}
});
});
</script>
这是一个AJAX响应页面
<?php
<table class="table table-message" style="margin: 10px 25px;max-width: 350px;">
<tbody>
<tr class="heading">
<td class="cell-title"> Year </td>
<td class="cell-title"> Month </td>
<td class="cell-title"><div align="right"> Amount </div></td>
<td class="cell-title"><div align="right"> Balance</div> </td>
<td class="" width="2%"><div align="right"></div></td>
</tr>
foreach($monthEnd_Arry as $m)
{
$sql_cls = mysql_query("SELECT book FROM cls_room_tb WHERE cls_brnch_id='$br_id' AND start_date <= '$m'");
$noCls = mysql_num_rows($sql_cls);
if ($noCls > 0) {
if ($noCls <= 4) {
$centFee = $noCls * 1000;
}
else {
$centFee = 4 * 1000;
$centFee += ($noCls - 4) * 500;
}
$sql_paid = mysql_query("SELECT SUM(amount) FROM other_payments WHERE br_id='$br_id' AND pay_type='$payType' AND
pYear = '$pYear' AND pMonth='". substr($m , 5, 2)."'");
$res_paid = mysql_fetch_row($sql_paid);
$paidAmount = $res_paid[0];
$amount = $centFee ;
echo '<tr class="unread">
<td class="cell-title" >'.$pYear.'</td>
<td class="cell-title" >'.month_crt( substr($m , 5, 2)).' - '.$noCls.' </td>
<td class="cell-title" >
<div align="right"> '.numFormt($amount).'</div>
</td>
<td class="cell-title" ><div align="right">'.numFormt( $amount - $paidAmount ).'</div></td>
<td class="cell-title" >
<input type="checkbox" class="check" name="checkPay[]" value="'.numFormt( $amount - $paidAmount ).'" />
</td>
</tr>';
}
}
?>
在ajax成功回调中总结一下,例如:
$.ajax({
url: 'AJAX_Requst/getOtherPaymt.php',
type: 'POST',
data: {
'pYear': y,
'payType': pType,
},
success: function (data) {
$('#ajax_img_lod').hide();
$('#ajax_response').html(data);
// find(':checked') for checked ones
// even none seems checked regarding your servser side script
// so maybe use `.find('.check')` instead but that's not clear what you are expecting here???
var sum = $('#ajax_response').find(':checked').map(function () {
return +this.value
}).get().reduce(function (a, b) {
return a + b;
});
// do whatever you want with `sum`
console.log(sum);
}
});
或者你想打电话给它:
$(document).on('change', '.check', function () {
var sum = $('.check').filter(':checked').map(function () {
return +this.value
}).get().reduce(function (a, b) {
return a + b;
}/* to start with default value != 0 as '5' in your posted code*/, 5);
// do whatever you want with `sum`
console.log(sum);
}
事实上,我不知道你期望的行为是什么。您希望如何/何时汇总选中的复选框值 但是我必须在AJAX响应后调用这个函数,它不起作用,这是怎么回事?请提供有关AJAX请求的相关代码,php就是响应。它工作得很好,我不是说服务器端的代码,而是客户端的代码。您需要使用相关的ajax回调进行总结。我已经将ajax请求更新为一旦加载ajax响应,那么只有用户必须选择多个复选框,然后一个文本框将显示所选复选框的总结amount@NSK那么我认为第二个解决方案就是你想要的。编辑:但请稍候,这应该与您已有的相同:$'body'。单击,'.check',函数{…};所以我很困惑。。。?!事实上,我仍然不明白预期的行为,我认为点击比改变更合适。。但两者都在发挥作用fine@NSK事实上,没有任何更改更合适,尤其是对于旧的浏览器,这些浏览器在click事件达到文档级别之前不会更新checked状态,即使在这里,我们将其委托给文档级别。顺便说一句,从本质上讲,使用change也更为正确。但是,随着jQuery规范化了这种行为,您可以使用click,它会工作得很好。从jQuery source://For checkbox,如果jQuery.nodeName this,input&&this.type==checkbox&&this.click{this.click;return false;},则激发本机事件,使选中状态正确`