У меня есть страница, на которой пользователь может отправить форму, которая работает нормально, но я хочу иметь поле количества, в котором пользователь может ввести номер, а в поле итогов он покажет общее количество, обновляя их количество. Я хотел бы достичь этого, не перезагружая страницу. Я думаю, что javascript будет лучшим для этого, но я не уверен, как это сделать, поскольку у меня есть опыт работы с javascript. Любая помощь очень ценится !!!
Мой код до сих пор:
<form> <table align="center"> <tr> <td colspan="3" align="center"><img src="<?php echo getProductImage($product_id); ?>" title="<?php echo getProductName($product_id); ?>" /></td> </tr> <tr> <td colspan="3"><br/></td> </tr> <tr> <td align="center">Quantity:</td> <td colspan="2"></td> </tr> <tr> <td><input type="number" min="64" max="9999" name="quantity" /></td> <td> @ $<?php echo number_format((getProductPrice($product_id)/2),4); ?>/per item = </td> <td>Total Goes Here</td> </tr> </table> </form>
См. Этот JSFiddle (обратите внимание на добавленный атрибут data-product-price
)
HTML
<table align="center"> <tr> <td align="center">Quantity:</td> <td colspan="2"></td> </tr> <tr> <td><input type="number" min="64" max="9999" name="quantity" /></td> <td> @ $345.50/per item = </td> <td data-product-price="345.50"></td> </tr> </table>
JavaScript
$(function(){ $("input[name='quantity']").on("input", function(){ var $outputCell = $(this).parent().siblings("[data-product-price]").eq(0); $outputCell.html((+$outputCell.data("product-price") * +$(this).val()).toFixed(2)); }); });
Минимальным примером использования jQuery и Javascript может быть:
<form> Quantity: <input type="text" id="quantityField"> <div>Total: <span id="totalField">0</span> $ (5$/item)</div> </form> <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> <script> // The line above loads jQuery // Javascript code goes here. You would normally have this in a separate file. // Somehow fetch the desired price from your program var pricePerItem = 5; // This code executes when the quantityField elements value changes $('#quantityField').on('input',function(event){ // 1. Read quantity var quantity = $(this).val(); // 2. Calculate total var total = pricePerItem * quantity; // 3. Update total field $('#totalField').text(total); }); </script>
Вы можете попробовать эхо цена / за продукт внутри отключенного ввода или добавив скрытый ввод, значение которого является ценой / на продукт.
Тогда вы можете попробовать этот JS:
$('your_quantity_input').on('change', function() { var quantity = $(this).val(); var price = $('your_hidden_input').val(); var total = quantity * price; $('your_td_total').html(total); });
Это с помощью jQuery.
Вот рабочий пример: