I created a plus / minus quantity button for a single woocommerce product page. Created a new quantity-input.php file
<?php
if ( ! defined( 'ABSPATH' ) )
exit; // Exit if accessed directly
?>
<div class="quantity">
<input class="minus" type="button" value="-">
<input type="number" step="<?php echo esc_attr( $step ); ?>" <?php if ( is_numeric( $min_value ) ) : ?>min="<?php echo esc_attr( $min_value ); ?>"<?php endif; ?> <?php if ( is_numeric( $max_value ) ) : ?>max="<?php echo esc_attr( $max_value ); ?>"<?php endif; ?> name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $input_value ); ?>" title="<?php _ex( 'Qty', 'Product quantity input tooltip', 'woocommerce' ) ?>" class="input-text qty text" size="4" />
<input class="plus" type="button" value="+">
</div>
$('.plus').on('click', function(e) {
var val = parseInt($(this).prev('input').val());
$(this).prev('input').attr( 'value', val+1 );
});
$('.minus').on('click', function(e) {
var val = parseInt($(this).next('input').val());
if (val !== 0) {
$(this).next('input').val( val-1 );
}
});
The code above changes the value of the text box, but does not change the value in the code. As a result, woocommerce does not receive any quantity changes. On the other hand, if I press the up / down button on the keyboard, the value changes are obtained by woocommerce. I think this happens because I used .val()instead .attr(), I changed to many times attr(), but in vain.
source
share