Buttons Plus & Minus

How to increment or decrement a form field using jQuery, specially useful for quantity fields.

by CJ Juarez

HTML

<div id='myform'>
    <input type='button' value='-' class='qtyminus' field='quantity' />
    <input type='text' name='quantity' value='0' class='qty' readonly />
    <input type='button' value='+' class='qtyplus' field='quantity' />
</div>

CSS

.qty {
    width: 40px;
    height: 25px;
    text-align: center;
}
input.qtyplus { 
    width:25px; 
    height:25px;
    
    border-radius: 50px;
    color: white;
    background-color: #cd1338;
}
input.qtyminus { 
    width:25px; 
    height:25px;
    
    border-radius: 50px;
    color: white;
    background-color: #cd1338;
}

JavaScript

jQuery(document).ready(function(){
    // This button will increment the value
    $('.qtyplus').click(function(e){
        // Stop acting like a button
        e.preventDefault();
        // Get the field name
        fieldName = $(this).attr('field');
        // Get its current value
        var currentVal = parseInt($('input[name='+fieldName+']').val());
        // If is not undefined
        if (!isNaN(currentVal)) {
            // Increment
            $('input[name='+fieldName+']').val(currentVal + 1);
        } else {
            // Otherwise put a 0 there
            $('input[name='+fieldName+']').val(0);
        }
    });
    // This button will decrement the value till 0
    $(".qtyminus").click(function(e) {
        // Stop acting like a button
        e.preventDefault();
        // Get the field name
        fieldName = $(this).attr('field');
        // Get its current value
        var currentVal = parseInt($('input[name='+fieldName+']').val());
        // If it isn't undefined or its greater than 0
        if (!isNaN(currentVal) && currentVal > 0) {
            // Decrement one
            $('input[name='+fieldName+']').val(currentVal - 1);
        } else {
            // Otherwise put a 0 there
            $('input[name='+fieldName+']').val(0);
        }
    });
});