在JQuery Autocomplete填充输入字段后调用新函数

问题描述 投票:0回答:1

我有以下问题。我有一个表单,用户选择一个具有JQuery自动完成功能的项目。在用户选择项目之后,该函数使用从Ajax调用返回的值自动填充这些输入字段:itemDescriptionSalesitemQuantityitemPriceitemPriceTotal。填充所有这些字段后,我需要调用一个新函数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));

    },

} );

} );
jquery jquery-ui autocomplete
1个回答
1
投票

填充新值后,只需在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();

}
© www.soinside.com 2019 - 2024. All rights reserved.