Я создаю страницу, которую два текстовых поля автоматически умножают на результат в другом текстовом поле. Но это не работает.
Javascript для умножения......
<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>
Когда я ввожу сумму и количество, она автоматически показывает стоимость в общей цене. Но это не работает. Пожалуйста, помогите
Пытаться
total = parseInt(price) * parseInt(quantity);
Это преобразует ваши строки val() в целые числа, чтобы сделать возможными математические операции. Если float использует parseFloat() вместо parseInt();
сначала преобразовать значения в определенный тип, а затем умножить. 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); }
Сначала вам нужно преобразовать значение или ввести его в 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);
}
parseInt
илиparseFloat
для значений перед умножением. Также вы создали функцию и не вызывали ее. поэтому удалите функцию и просто напишите код тамforeach
, вы НИКОГДА не должны иметь атрибутаid
(если у вас нет некоторого увеличивающегося итератора, но отследить это становится невозможно.