0

我创建了一个回调函数来延迟将产品添加到购物车的函数,如下所示。

productAddToCartForm.submit(this)仍然为时过早。我也尝试过 promise 函数(虽然我不确定它是否适用于这里)。

回调函数将隐藏的输入附加到我需要发布的变量中。添加到购物车功能在添加之前被调用。

现在唯一有效的是超时功能,但我不想这样做。

Console.log标题为 1-4 正在记录。有任何想法吗?

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();
    }
}
4

1 回答 1

0

看起来即使元素已添加到 DOM,在调用回调函数时表单还没有刷新。

您已经提到您不想使用它,但是如果没有可重现的小提琴,我只能建议setTimeout()

if (callback) {
    setTimeout(callback, 1);
}

这会短暂地将控制权交给浏览器,以便它可以进行一些内部簿记,并且(不幸的是)这是解决此类问题的一种行之有效的方法。

于 2013-06-18T02:17:07.747 回答