在keyup上乘以输入值并添加它们

时间:2013-04-02 02:51:54

标签: php jquery

我有一些像这样生成的输入

while($donnees = mysql_fetch_array($reqmodel)){
?>
<form action="#" name="order" method="post">
<div style='float:left;width:100%'>
<input type='text' name='order_item_sku[]' value='<?php echo $donnees['product_sku'] ;?>'>
<input type='text' name='product_quantity[]' value='0' id="qty[]">
<input type='text' name='product_name[]' value='<?php echo $donnees['product_name'] ;?>'>
<input type='text' name='product_id[]' value='<?php echo $donnees['virtuemart_product_id'] ;?>' style='width: 15px;'>
<input type='text' name='product_price[]' value='<?php echo $price = number_format($donnees['product_price']*1.196,0) ;?>' style='width: 25px;' id="prix[]">

然后我不知道我会得到多少输入。如何为每行乘以total price product_quantity * product_price

3 个答案:

答案 0 :(得分:1)

以下代码可能会有所帮助,也可能只是通过查看上面的代码来提供一些建议。

while ($row = mysql_fetch_array($reqmodel, MYSQL_ASSOC)) {
    $productPrice = number_format($row['product_price']*$row['product_quantity'],0);
    <input type='text' name='product_price' value='<?php echo "$price = {$productPrice}" ;?>' style='width: 25px;' id="prix">
}

建议1:

不推荐使用mysql_fetch_array以支持新的mysqli_fetch_array(),因此请考虑升级PHP数据库查询代码。

建议2:

我建议使用PHP模板引擎,例如Smarty。这将节省您将数据层与表示层分开的时间,并且您不需要编写如此多的内联echo语句来保持代码清洁。

建议3:

避免在名称语句中使用[]因为[]通常与数组相关联,并且可能会让任何试图阅读代码的人感到困惑。

建议4:

避免使用while循环,尽可能尝试使用for循环。这可以使代码保持快速并防止任何未知错误/泄漏/无限循环。

答案 1 :(得分:0)

您只需在输入的数组上运行for循环:

$total_price = 0;
$prices = $_POST['product_price'];
$quantities = $_POST['product_quantity'];
$c = count($prices);
for ($i = 0; $i < $c; $i++) {
    $p = (int) $prices[$i]; $q = (int) $quantities[$i];
    $total_price += $p * $q; 
}

答案 2 :(得分:0)

这里是jQuery

http://jsfiddle.net/b9chris/hSxkW/

给出HTML输出,如:

<div>
<input name=qty />
<input name=price />
<span class=price></span>
</div>

<div>
<input name=qty />
<input name=price />
<span class=price></span>
</div>

这将自动计算范围标记中的价格字段:

$('input[name=qty], input[name=price]').keyup(function() {
    var divParent = $(this).closest('div');
    var qty = $('input[name=qty]', divParent).val()-0;
    var price = $('input[name=price]', divParent).val()-0;
    if (qty >= 0 && price >= 0)
        $('span.price', divParent).text(qty*price);
});