嘿伙计我有一个带有几个复选框的表,所有这些复选框都在它们旁边的隐藏输入中有一个数值。我想在我的小桌子底部的输入文本中显示这些的总和。我的脚本如下所示,但事实证明我的JS和JQuery知识(方式?)是最小的。什么是最好的方法的任何线索?
<td>
<input checked="checked" type="checkbox" class="processPaymentProducts" name="processPaymentProducts[]" value="<?=$transaction['student_transaction_id']?>" />
<input type="hidden" id="prodPrice[<?=$transaction['student_transaction_id']?>]" name="prodPrice[<?=$transaction['student_transaction_id']?>]" value="<?=($transaction['student_transaction_amount_min']*100)?>" />
</td>
<script>
$(document).ready(function() {
$(".processPaymentProducts").click(function(){
var amount;
$amount = 0;
jQuery.each($(".processPaymentProducts:checked").val(), function() {
$amount += $(this).next('input').val();
console.log($(this).next('input').val());
});
if($amount>100) { $amount = $amount/100; } else { $amount = 0; }
$('#processPaymentAmount').val($amount);
});
});
</script>
答案 0 :(得分:2)
对于初学者,你不需要.next()中的选择器。 .next在你的标记下可以正常工作。此外,.each不像您正在使用它一样工作。我改变了它。此外,在根据输入值进行数学运算时,有时您会得到未定义的东西,这可能会让事情变得棘手。如果你做||在值选择器的末尾,如果得到未定义的值,它将返回0。所以......这很好。试试看。
$(document).ready(function() {
$(".processPaymentProducts").click(function(){
var amount;
$amount = 0;
$(".processPaymentProducts:checked").each(function() {
$amount += $(this).next().val() || 0;
console.log($(this).next().val() || 0);
});
if($amount>100) { $amount = $amount/100; } else { $amount = 0; }
$('#processPaymentAmount').val($amount);
});
});
答案 1 :(得分:1)
html中的每个字段都是“字符串”,字段中的偶数将被视为字符串。
所以你应该使用parseInt()方法将字符串翻译成整数
例如,
此代码:
$amount += $(this).next('input').val()
应该是
$amount += parseInt($(this).next('input').val())
完成所有计算后,请记住将整数转换回字符串以将其放入字段中。