не может работать умножение в JavaScript

0

Я создаю страницу, которую два текстовых поля автоматически умножают на результат в другом текстовом поле. Но это не работает.

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>

Когда я ввожу сумму и количество, она автоматически показывает стоимость в общей цене. Но это не работает. Пожалуйста, помогите

  • 1
    используйте parseInt или parseFloat для значений перед умножением. Также вы создали функцию и не вызывали ее. поэтому удалите функцию и просто напишите код там
  • 0
    Предупреждение: у вас есть дубликаты ID. Если вы выводите элементы в цикле foreach , вы НИКОГДА не должны иметь атрибута id (если у вас нет некоторого увеличивающегося итератора, но отследить это становится невозможно.
Показать ещё 1 комментарий
Теги:

3 ответа

4
Лучший ответ

Пытаться

total = parseInt(price) * parseInt(quantity);

Это преобразует ваши строки val() в целые числа, чтобы сделать возможными математические операции. Если float использует parseFloat() вместо parseInt();

  • 0
    пожалуйста, объясните свой ответ, а также .. :-)
  • 2
    С ценой есть вероятность, что это поплавок ...
Показать ещё 5 комментариев
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); }

  • 0
    Могу ли я назвать имя класса в php
  • 0
    Я не знаю о php, но я думал, что проблема в вашем коде JavaScript.
Показать ещё 1 комментарий
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);
}
  • 0
    это не работает
  • 0
    Могу ли я назвать имя класса в php
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню