Skip to content

Instantly share code, notes, and snippets.

@wpexplorer
Last active October 14, 2016 17:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wpexplorer/41d27d65f2b287db9a2eee1a0408557d to your computer and use it in GitHub Desktop.
Save wpexplorer/41d27d65f2b287db9a2eee1a0408557d to your computer and use it in GitHub Desktop.
( function( $ ) {
'use strict';
function wcQuantityIncrementPrepend() {
$( 'div.quantity:not(.buttons_added), td.quantity:not(.buttons_added)' ).addClass( 'buttons_added' ).append( '<input type="button" value="+" class="plus" />' ).prepend( '<input type="button" value="-" class="minus" />' );
}
wcQuantityIncrementPrepend();
$( document ).on( 'click', '.plus, .minus', function() {
// Get values
var $qty = $( this ).closest( '.quantity' ).find( '.qty' ),
currentVal = parseFloat( $qty.val() ),
max = parseFloat( $qty.attr( 'max' ) ),
min = parseFloat( $qty.attr( 'min' ) ),
step = $qty.attr( 'step' );
// Format values
if ( ! currentVal || currentVal === '' || currentVal === 'NaN' ) currentVal = 0;
if ( max === '' || max === 'NaN' ) max = '';
if ( min === '' || min === 'NaN' ) min = 0;
if ( step === 'any' || step === '' || step === undefined || parseFloat( step ) === 'NaN' ) step = 1;
// Change the value
if ( $( this ).is( '.plus' ) ) {
if ( max && ( max == currentVal || currentVal > max ) ) {
$qty.val( max );
} else {
console.log( currentVal );
$qty.val( currentVal + parseFloat( step ) );
}
} else {
if ( min && ( min == currentVal || currentVal < min ) ) {
$qty.val( min );
} else if ( currentVal > 0 ) {
console.log( currentVal );
$qty.val( currentVal - parseFloat( step ) );
}
}
// Trigger change event
$qty.trigger( 'change' );
});
// Run on cart update
$( document.body ).on( 'updated_wc_div', function( event ) {
wcQuantityIncrementPrepend();
} );
} ( jQuery ) );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment