Quantity Buttons (+ _) dissapear after update cart
-
hey there,
I see several threads here that say the + and – in the shopping cart are doubling after the recent oceanwp update. However, my problem is that the + and – disappear as soon as you press the buttons and start updating the shopping cart. I’m using Elementor product templates.
I already tried the cache solution but unfortunately it didn’t work. Is there any other solution or do I have to go back to the old version?
Sincerely,
Ray
-
Same here,
Did not read the code, but seems woo-quantity-buttons.js is not applied on ajax calls as was wooQuantityButtons.js…
For now I think I’ll bind refresh button with cart page reload.
Hello All,
Thank you for your report,
This is forwarded to the developer team, and it will be checked and fixed for the next updates.Temporary solution to fix that issue:
Please put the CSS below in Customizing Environment > Custom CSS/JS > JS Code:
https://docs.oceanwp.org/article/354-add-custom-css-and-js-to-your-websitevar $j = jQuery.noConflict(); function oceanwpWooQuantityButtons(i) { var o, t; ($cart = $j(".woocommerce div.product form.cart")), (i = i || ".qty"), (o = $j("div.quantity:not(.buttons_added), td.quantity:not(.buttons_added)").find(i)) && "date" !== o.prop("type") && "hidden" !== o.prop("type") && (o.parent().addClass("buttons_added").prepend('<a href="javascript:void(0)" class="minus">-</a>'), o.after('<a href="javascript:void(0)" class="plus">+</a>'), $j("input" + i + ":not(.product-quantity input" + i + ")").each(function () { var o = parseFloat($j(this).attr("min")); o && 0 < o && parseFloat($j(this).val()) < o && $j(this).val(o); }), !$j("body").hasClass("single-product") || "on" != oceanwpLocalize.floating_bar || $cart.hasClass("grouped_form") || $cart.hasClass("cart_group") || (t = $j(".woocommerce form input[type=number].qty")).on("keyup", function () { var o = $j(this).val(); t.val(o); }), $j(".plus, .minus").unbind("click"), $j(".plus, .minus").on("click", function () { var o = !$j("body").hasClass("single-product") || "on" != oceanwpLocalize.floating_bar || $cart.hasClass("grouped_form") || $cart.hasClass("cart_group") ? $j(this).closest(".quantity").find(i) : $j(".plus, .minus").closest(".quantity").find(i), t = parseFloat(o.val()), e = parseFloat(o.attr("max")), a = parseFloat(o.attr("min")), s = o.attr("step"); (t && "" !== t && "NaN" !== t) || (t = 0), ("" !== e && "NaN" !== e) || (e = ""), ("" !== a && "NaN" !== a) || (a = 0), ("any" !== s && "" !== s && void 0 !== s && "NaN" !== parseFloat(s)) || (s = 1), $j(this).is(".plus") ? (e && (e == t || e < t) ? o.val(e) : o.val(t + parseFloat(s))) : a && (a == t || t < a) ? o.val(a) : 0 < t && o.val(t - parseFloat(s)), o.trigger("change"); })); } $j(document ).ajaxComplete(function () { "use strict"; oceanwpWooQuantityButtons(); });
Note: if you have a cache plugin or server cache. You need to clear its cache contents or disable them.
Best Regards
Thanks for this piece of code, but this doesn’t do.
Now buttons are duplicated at page load and quantity are doubled at page load or ajax load (i.e. car refresh), even if buttons do appear now at ajax reload. At the same time, this introduces a “quantity doubled” bug (somehow logical as there are two ++ and two — button at page load, binded with the same event.Feel free to continue using the staging site I provided you to work on this.
Hope it helps.
Hi @madmax4ever,
Please use this JS code:
var $j = jQuery.noConflict(); function oceanwpWooQuantityButtons(i) { var o, t; ($cart = $j(".woocommerce div.product form.cart")), (i = i || ".qty"), (o = $j("div.quantity:not(.buttons_added), td.quantity:not(.buttons_added)").find(i)) && "date" !== o.prop("type") && "hidden" !== o.prop("type") && (o.parent().addClass("buttons_added").prepend('<a href="javascript:void(0)" class="minus">-</a>'), o.after('<a href="javascript:void(0)" class="plus">+</a>'), $j("input" + i + ":not(.product-quantity input" + i + ")").each(function () { var o = parseFloat($j(this).attr("min")); o && 0 < o && parseFloat($j(this).val()) < o && $j(this).val(o); }), !$j("body").hasClass("single-product") || "on" != oceanwpLocalize.floating_bar || $cart.hasClass("grouped_form") || $cart.hasClass("cart_group") || (t = $j(".woocommerce form input[type=number].qty")).on("keyup", function () { var o = $j(this).val(); t.val(o); }), $j(".plus, .minus").unbind("click"), $j(".plus, .minus").on("click", function () { var o = !$j("body").hasClass("single-product") || "on" != oceanwpLocalize.floating_bar || $cart.hasClass("grouped_form") || $cart.hasClass("cart_group") ? $j(this).closest(".quantity").find(i) : $j(".plus, .minus").closest(".quantity").find(i), t = parseFloat(o.val()), e = parseFloat(o.attr("max")), a = parseFloat(o.attr("min")), s = o.attr("step"); (t && "" !== t && "NaN" !== t) || (t = 0), ("" !== e && "NaN" !== e) || (e = ""), ("" !== a && "NaN" !== a) || (a = 0), ("any" !== s && "" !== s && void 0 !== s && "NaN" !== parseFloat(s)) || (s = 1), $j(this).is(".plus") ? (e && (e == t || e < t) ? o.val(e) : o.val(t + parseFloat(s))) : a && (a == t || t < a) ? o.val(a) : 0 < t && o.val(t - parseFloat(s)), o.trigger("change"); })); } ($j = jQuery.noConflict())(window).ajaxComplete(function ($) { "use strict"; if( $j(".woocommerce div.product form.cart").find(".plus") ) { console.log('true'); $j(window).ajaxComplete(function ($) { "use strict"; console.log('ajax'); oceanwpWooQuantityButtons(); }); } else { console.log('else'); oceanwpWooQuantityButtons(); } });
Thank you,
Best RegardsAs we’ve discussed directly, it is not the solution, as it creates and other bad behavior (all buttons seems OK, i.e. not duplicated, but after cart refresh, the step quantity is 2, so one click on + or – gives +2 or -2…).
I know you’re working on it at OceanWP, so stay tune! ??
Hello @madmax4ever,
Thank you for your report. We are aware of the issue.
The code will be fixed as a temporary solution(of course, in some other conditions, it has created a new issue). However, this is forwarded to the developer team, and it will be fixed/improved for the next updates.
Best Regards
I am having the same problem too!! Have you found a solution yet? The +/- sign disappears after I click “UPDATE CART” button.
I went to OCEANWP’s demo site https://towel.oceanwp.org/ and try out the update button. The +/- sign also disappear on the demo. Is it by design?
It’s very inconvenient for customers who want to change quantity again after updating the cart. Are there any fix for this issue?Thank you
AnnaSame here. Looking forward to a fix as soon as possible. Really annoying for UX, and no other quantity buttons plugin can override this bug.
It seems today’s update has fixed the issue. ?? So far, I haven’t experienced this bug since 3.0.4.
Hello All,
Please use the latest version of OceanWP theme (and other plugins).
We’ve fixed your issue on this ticket on the latest version of the theme(v3.0.4):
https://docs.oceanwp.org/article/653-oceanwp-theme-changelog
https://docs.oceanwp.org/article/677-oceanwp-theme-ocean-extensions-changelogs
?
— @nnlam Thank you for your report; We’ll update all new demos to the latest version.Thank you all for your waiting.
Warm Regards
Last release of Ocean Wp won’t fix the issue. Still there.
So the buttons are still not displayed, and if add the code above the minimun step is 2 and not one as it should be. What a disaster this theme, first and last time I will use it.
Is the problem solved now?
Can I update the theme withouth any problems now?
Kind regards
- The topic ‘Quantity Buttons (+ _) dissapear after update cart’ is closed to new replies.