我创建了一个回调函数来延迟将产品添加到购物车的功能,如下所示。
productAddToCartForm.submit(this)
仍然被称为过早。我也试过了promise功能(虽然我不确定它是否适用于此)。
回调函数会附加一个隐藏的输入,其中包含我需要发布的变量。添加到购物车功能在被追加之前被调用。
现在唯一可行的是超时功能,但我不想这样做。
标有1-4 ARE记录的 Console.log
。有什么想法吗?
updatePrices(IDs, function () {
//setInterval(function(){productAddToCartForm.submit(this)},2000);
console.log("3. finished function and returned");
$j("input").promise().done(function () {
console.log("4.Finished! ");
productAddToCartForm.submit(this);
});
});
function updatePrices(IDs, callback) {
console.log("1. entering update Prices function");
//... A BUNCH OF N/A CODE, ASSUME BASEPRICE 2.50
if (IDs.length == 1) {
console.log("2. IDs equals one");
$j('.priceBlock input').remove();
$j('.details' + IDs[i] + ' .priceBlock').append('<input type="hidden" name="customPrice" value="' + basePrice + '"/>');
//return;
}
if (callback) {
callback();
}
}
答案 0 :(得分:0)
似乎即使元素已添加到DOM中,表单也不会在调用回调函数时刷新。
你提到你不想使用它,但没有可重复的小提琴,我只能建议setTimeout()
:
if (callback) {
setTimeout(callback, 1);
}
这会简单地将控制权移交给浏览器,以便它可以进行一些内部簿记,并且(不幸的是)这是一种经证实可以解决这些问题的方法。