как вызвать функцию jquery, когда поле автоматически заполнено?

0

Я создал форму заказа с несколькими строками и столбцами Product_id Qty price

Количество и цена автоматически заполняются при выборе Product в выпадающем списке.

В конце формы у меня есть поле, которое болело общей суммой <span id="total"></span>

Я сделал код ниже, чтобы рассчитать общую сумму заказа, но он не работает, когда qty и price автоматически заполняются. Он работает, если я qty или price

jQuery(function($) {
    $(".qty, .price").change(function() {
        var total = 0;
        $(".qty").each(function() {
            var self = $(this),
                price = self.next(".price"),
                subtotal = parseInt(self.val(), 10) * parseFloat(price.val(), 10);
            total += (subtotal || 0);
        });
        $("#total").text(total);
    });
});
Теги:

4 ответа

1

Я не знаю, правильно ли это, но вы пробовали использовать documnt.load()? вы можете поместить код в функцию, которую вы вызываете при загрузке страницы, и когда значение поля изменилось.

1

Вам просто нужно отделить ваш код от новой функции, например:

var calculate = function() {
    var total = 0;
    $(".qty").each(function() {
        var self = $(this),
            price = self.next(".price"),
            subtotal = parseInt(self.val(), 10) * parseFloat(price.val(), 10);
        total += (subtotal || 0);
    });
    $("#total").text(total);
};
$(".qty, .price").change(calculate);

Затем назовите его, когда захотите.

1

Вы можете использовать .trigger('change') или .change() при изменении значения текстового .change() из кода:

 $(".qty, .price").trigger('change');

или

 $(".qty, .price").change();

Например:

 $(".qty").val('30').change();  
  • 0
    Я сделал это, но все еще не работает: <code> jQuery (function ($) {$ (". Qty, .price"). Trigger ('change', function () {var total = 0; $ (". qty "). each (function () {var self = $ (this), цена = self.next (". price "), промежуточный итог = parseInt (self.val (), 10) * parseFloat (price.val () , 10); total + = (промежуточный итог || 0);}); $ ("# total"). Text (total);});}); </ code>
  • 0
    @ user3383794: что не работает ?? какие-либо ошибки ??
0

Попробуйте вызвать функцию на загрузке страницы и сделать это следующим образом.

$( document ).ready(function() {

  YourFunction();


YourFunction() function{

     // insert your code
 }
});

Тогда вы можете сказать

$(".qty, .price").change(function() {
     YourFunction();
}
  • 0
    Я пробовал эту функцию и вызываю ее, когда выбран идентификатор продукта, но при обновлении кол-во и цены происходит задержка. Функция запускается только при выборе следующего товара. Есть ли способ отложить функцию? function caltotal() { var total = 0; $(".qty").each(function() { var self = $(this), price = self.next(".price"), subtotal = parseInt(self.val(), 10) * parseFloat(price.val(), 10); total += (subtotal || 0); }); $("#total").text(total); }

Ещё вопросы

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