我创建了一个页面,其中两个文本框自动在另一个文本框中显示结果。但它不起作用。
Javascript for multiplication ......
<script type="text/javascript">
$(document).ready(function() {
$('#dataTable').on('keyup', '.price', calTotal)
.on('keyup', '.quantity', calTotal);
// find the value and calculate it
function calTotal() {
var $row = $(this).closest('tr'),
price = $row.find('.price').val(),
quantity = $row.find('.quantity').val(),
total = price * quantity;
// change the value in total
$row.find('.txt').val(total)
}
});
</script>
html和php代码是......
<table border="1" id="dataTable">
<tr>
<th> Id</th>
<th>p</th>
<th>B</th>
<th>M</th>
<th>D</th>
<th>De</th>
<th>Q</th>
<th>T</th>
</tr>
<?php
echo"<p></p>";
echo"<p></p>";
echo"<p></p>";
echo"<p><h3> Details</h3></p>";
$order = "SELECT * FROM abd ";
$result = mysql_query($order);
while($row = mysql_fetch_array($result))
{
$p= $row['p'];
$b=$row['b'];
$m= $row['m'];
$dp=$row['price'];
$q=$row['quantity'];
echo "<td><input type=text value=$id name=item[] readonly=readonly /></td>";
echo "<td><input type=text id=p name=p[] value=$p ></td>";
echo "<td><input type=text id=B name=b[] value=$b ></td>";
echo "<td><input type=text id=M name=m[] value=$m ></td>";
echo "<td><input type=text id=Q name=qua[] value=$qua ></td>";
echo "<td><input type=text id=price name=price[] value=$price class=price ></td>";
echo "<td><input type=text id=Quantity name=q value=$q class=quantity ></td>";
echo "<td><input type=text id=txt name=txt class=txt > </td>";
?>
</table>
当我输入dprice和数量时,它会自动显示总价格中的值。 但它不起作用。请帮助
答案 0 :(得分:4)
尝试
total = parseInt(price) * parseInt(quantity);
这会将val()字符串转换为整数,以进行可能的数学运算。如果有浮点数,则使用parseFloat()而不是parseInt();
答案 1 :(得分:1)
首先将值转换为特定类型,然后进行乘法运算。
function calTotal() {
var $row = $(this).closest('tr'),
price = parseFloat($row.find('.price').val());
quantity = parseInt($row.find('.quantity').val());
total =price * quantity;
console.log("Total is " + total);
}
答案 2 :(得分:0)
首先,您必须使用number
或使用parseInt()
方法将值或输入转换为parseFloat()
。像这样的东西会起作用
function calTotal() {
var $row = $(this).closest('tr'),
price = $row.find('.price').val();
quantity = $row.find('.quantity').val();
total =parseInt(price) * parseInt(quantity);
//total= parseFloat(price) * parseFloat(quantity); this can be used also
console.log("Total is " + total);
}