Вызовите новую функцию после того, как автозаполнение JQuery заполнит поля ввода - PullRequest
0 голосов
/ 30 марта 2019

У меня следующая проблема.У меня есть форма, где пользователь выбирает элемент с автозаполнением JQuery.После того, как пользователь выберет элемент, функция автоматически заполняет эти поля ввода значениями, возвращаемыми при вызове Ajax: itemDescriptionSales, itemQuantity, itemPrice, itemPriceTotal.После того, как все эти поля заполнены, мне нужно вызвать новую функцию recalcuateTotal, чтобы пересчитать итоговую цену на основе значений внутри полей ввода.Проблема в том, что функция recalculateTotal вызывается до того, как все поля ввода заполнены значением.Я попытался вызвать функцию с помощью следующего кода, но, очевидно, он не работает.

$( ".itemCode" ).on( "autocompleteselect", function(  ) {

    recalculateTotal();
} );

Я также попытался реализовать setTimeout(recalculateTotal, 1000), который бы задерживал вызов функции.Я считаю, что это не правильный подход, хотя.Есть ли у кого-нибудь предложения, как решить эту проблему?У меня есть следующий код для функции автозаполнения.Любая помощь будет принята с благодарностью!

$( function() {

$( ".itemCode" ).autocomplete({
  source: function( request, response ) {
    $.ajax( {
      url: "items-search.php",
      dataType: "json",
      data: {
        term: request.term
      },
      success: function( data ) {
        response( data );
      }
    } );
  },
  minLength: 3,
  select: function( event, ui ) {

      $(this).parent().siblings().children(".itemDescriptionSales").val(ui.item.itemDescriptionSales);
      $(this).parent().siblings().children(".itemQuantity").val(ui.item.itemQuantity);
      $(this).parent().siblings().children(".itemPrice").val(ui.item.itemPrice);
      $(this).parent().siblings().children(".itemPriceTotal").val((ui.item.itemPrice)*(ui.item.itemQuantity));

    },

} );

} );

1 Ответ

1 голос
/ 30 марта 2019

Просто вызовите его в обратном вызове select после ввода новых значений

select: function(event, ui) {
  var $inputs = $(this).parent().siblings().children()
  $inputs.filter(".itemDescriptionSales").val(ui.item.itemDescriptionSales);
  $inputs.filter(".itemQuantity").val(ui.item.itemQuantity);
  $inputs.filter(".itemPrice").val(ui.item.itemPrice);
  $inputs.filter(".itemPriceTotal").val((ui.item.itemPrice) * (ui.item.itemQuantity));
  // values are updated so can calculate now
  recalculateTotal();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...