onChange来计算多行的总数并不起作用

时间:2013-12-02 10:45:13

标签: javascript php jquery html

我正在尝试计算每个新项目的总价格。我创建了一个onchange函数,它将根据用户输入的数量计算总价格,因此每次用户更改数量时,价格都会发生变化。我已经尝试运行我的代码,但它似乎没有在相应的文本框中计算和显示总数。

的JavaScript

function getTotal($i)
{
var price = document.getElementById('priceper_'+$i+'').value;
var per_pack = document.getElementById('per_pack_'+$i+'').value;
var quantity = document.getElementById('quantity_'+$i+'').value;

document.getElementById('subtotal_'+$i+'').value = ((price/per_pack)*quantity);
}

HTML / PHP:

<table>
<tr>
<td>Paper</td>
<td align="center">Price</td>
<td align="center">Per Pack</td>
<td align="center">Quantity</td>
<td align="center">Sub Total</td>
</tr>
<tr class="multipp">
<td><input type="text" name="description_0" id="description_" size="85" maxlength="70" value="<?php echo htmlspecialchars($description[0]); ?>" /></td>
<td><input type="text" name="priceper_0" id="priceper_" size="10" maxlength="9" value="" /></td>
<td><input type="text" name="per_pack_0" id="per_pack_" size="10" maxlength="9" value="" /></td>
<td><input type="text" name="quantity_0" id="quantity_" size="10" maxlength="9" onChange="getTotal($i);"/></td>
<td><input type="text" name="subtotal_0" id="subtotal_" size="15" maxlength="9" value="" /></td>
</tr>
<?php
for($i=1; $i<10; $i++)
{
  echo '<tr class="multipp">';
  echo '<td><input type="text" name="description_'.$i.'" id="description_'.$i.'" size="85" maxlength="70" value="'.htmlspecialchars($description[$i]).'" /></td>';
  echo '<td><input type="text" name="priceper_'.$i.'" id="priceper_'.$i.'" size="10" maxlength="9" value="'.htmlspecialchars($priceper[$i]).'" /></td>';
  echo '<td><input type="text" name="per_pack_'.$i.'" id="per_pack_'.$i.'" class="txt" size="10" maxlength="9" value="'.htmlspecialchars($priceper[$i]).'" /></td>';
  echo '<td><input type="text" name="quantity_'.$i.'" id="quantity_'.$i.'" size="10" maxlength="9" onChange="getTotal($i);" value="'.htmlspecialchars($quantity[$i]).'" /></td>';
  echo '<td><input type="text" name="subtotal_'.$i.'" id="subtotal_'.$i.'" size="15" maxlength="9" value="'.htmlspecialchars($subtotal[$i]).'" /></td>';
  echo '</tr>';
}
?>
</table>

2 个答案:

答案 0 :(得分:2)

改变这个:

 echo '<td><input type="text" name="quantity_'.$i.'" id="quantity_'.$i.'" size="10" maxlength="9" onChange="getTotal($i);" value="'.htmlspecialchars($quantity[$i]).'" /></td>';

 echo '<td><input type="text" name="quantity_'.$i.'" id="quantity_'.$i.'" size="10" maxlength="9" onChange="getTotal('.$i.');" value="'.htmlspecialchars($quantity[$i]).'" /></td>';

此处,onChange="getTotal($i);" $ i未被解释,因为您正在创建一个被简单引号括起来的字符串。

答案 1 :(得分:0)

您的以下代码行:

<input type="text" name="quantity_0" id="quantity_" size="10" maxlength="9" onChange="getTotal($i);"/></td>

应该是这个

<input type="text" name="quantity_0" id="quantity_0" size="10" maxlength="9" onChange="getTotal(<?php echo $i;?>);"/></td>

以下代码行:

echo '<td><input type="text" name="quantity_'.$i.'" id="quantity_'.$i.'" size="10" maxlength="9" onChange="getTotal($i);" value="'.htmlspecialchars($quantity[$i]).'" /></td>'

应该是这样的:

echo '<td><input type="text" name="quantity_'.$i.'" id="quantity_'.$i.'" size="10" maxlength="9" onChange="getTotal('.$i.');" value="'.htmlspecialchars($quantity[$i]).'" />`</td>'

在javascript代码中将$i替换为i,因为$ i是php的格式。