JQuery数组和输入复选框+隐藏

时间:2011-08-19 09:11:14

标签: php javascript jquery jquery-selectors

嘿伙计我有一个带有几个复选框的表,所有这些复选框都在它们旁边的隐藏输入中有一个数值。我想在我的小桌子底部的输入文本中显示这些的总和。我的脚本如下所示,但事实证明我的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>

2 个答案:

答案 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())

完成所有计算后,请记住将整数转换回字符串以将其放入字段中。