I managed to fix it by adding this onto the cart page. It seems that a slight delay is required for the JS to reinitialise the functions:
function quantity_step_btn() {
var timeoutPlus;
jQuery('.quantity .plus').one().on('click', function() {
$input = jQuery(this).prev('input.qty');
var val = parseInt($input.val());
var step = $input.attr('step');
step = 'undefined' !== typeof(step) ? parseInt(step) : 1;
$input.val( val + step ).change();
if( timeoutPlus != undefined ) {
clearTimeout(timeoutPlus)
}
timeoutPlus = setTimeout(function(){
jQuery('[name="update_cart"]').trigger('click');
}, 1000);
});
var timeoutMinus;
jQuery('.quantity .minus').one().on('click', function() {
$input = jQuery(this).next('input.qty');
var val = parseInt($input.val());
var step = $input.attr('step');
step = 'undefined' !== typeof(step) ? parseInt(step) : 1;
if (val > 1) {
$input.val( val - step ).change();
}
if( timeoutMinus != undefined ) {
clearTimeout(timeoutMinus)
}
timeoutMinus = setTimeout(function(){
jQuery('[name="update_cart"]').trigger('click');
}, 1000);
});
var timeoutInput;
jQuery('div.woocommerce').on('change', '.qty', function(){
if( timeoutInput != undefined ) {
clearTimeout(timeoutInput)
}
timeoutInput = setTimeout(function(){
jQuery('[name="update_cart"]').trigger('click');
}, 1000);
});
}
jQuery( document ).on( 'updated_cart_totals', function() {
quantity_step_btn();
});