我遇到以下问题。我有一个表单,用户在其中选择带有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));
},
} );
} );
答案 0 :(得分: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();
}