这是场景:
我正在使用 ajax 添加到购物车扩展来将产品添加到购物车而不刷新页面。
我已经修改了 list.phtml 文件,使其具有一些增加“+”和“-”加号和减号按钮输入的数量增量功能。(来源:http: //jigowatt.co.uk/blog/magento-quantity-increments-jquery-edition/)。
这个问题用 2 个不同的观察结果解释:
1st/如果我通过单击+按钮输入来增加数量,当我看到输入框中的值发生变化时,数量会正确变化,但是然后我单击添加到购物车按钮,并且只添加了1个产品。无论我点击+按钮多少次得到我想要的数量,添加到购物车的数量总是1。
第二/如果我在数量框中手动输入所需的数量,例如 5,没问题:购物车刷新了 5 件商品。
所以基本上只有当点击增量按钮 + 时,才不会添加项目数,只会添加一个。
这是添加增量功能并添加 + 和 - 按钮的代码:
jQuery("div.quantity").append('<input type="button" value="+" id="add1" class="plus" />').prepend('<input type="button" value="-" id="minus1" class="minus" />');
jQuery(".plus").click(function()
{
var currentVal = parseInt(jQuery(this).prev(".qty").val());
if (!currentVal || currentVal=="" || currentVal == "NaN") currentVal = 0;
jQuery(this).prev(".qty").val(currentVal + 1);
});
jQuery(".minus").click(function()
{
var currentVal = parseInt(jQuery(this).next(".qty").val());
if (currentVal == "NaN") currentVal = 0;
if (currentVal > 0)
{
jQuery(this).next(".qty").val(currentVal - 1);
}
});
现在,要让 ajax 添加到购物车按钮与 list.phtml 上的数量输入框一起工作,必须进行一些修改(来源:http: //forum.aheadworks.com/viewtopic.php? f=33&t=601 )
必须替换的原始代码是:
<!-- Find this block of code: -->
<?php if($_product->isSaleable()): ?>
<button type="button" class="button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<?php else: ?>
它必须用下面的代码替换,如上面发布的论坛链接中所述:
<!-- And replace it with this block of code: -->
<?php if($_product->isSaleable()): ?>
<script type="text/javascript">
function setQty(id, url) {
var qty = document.getElementById('qty_' + id).value;
document.getElementById('cart_button_' + id).innerHTML = '<button type="button" class="button" onclick="setLocation(\'' + url + 'qty/' + qty + '/\')"><span><span>Add to Cart</span></span></button>';
}
</script>
<label for="qty"><?php echo $this->__('Qty:') ?></label>
<input type="text" name="qty_<?php echo $_product->getId(); ?>" id="qty_<?php echo $_product->getId(); ?>" maxlength="12" value="1" onkeyup="setQty(<?php echo $_product->getId(); ?>, '<?php echo $this->getAddToCartUrl($_product) ?>');" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
<span id="cart_button_<?php echo $_product->getId(); ?>"><button type="button" class="button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></span>
<?php else: ?>
我不知道为什么添加到购物车的数量只有在手动输入值时才正确。使用 +(加号)或 -(减号)按钮时,我也需要将正确的数量添加到购物车中。出于某种原因,输入框中的数量会发生变化,但是在单击添加到购物车后,此值不是购物车中的值(始终有 1 个产品添加到购物车)。
是什么导致了这个问题?解决这个问题的解决方案是什么?我很想理解并解决这个问题,因为我整个下午都在尝试。非常感谢。