A Counter with plus minus buttons for changing Input(Number) field.
<!-- Change the `data-field` of buttons and `name` of input field's for multiple plus minus buttons-->
<div class="input-group plus-minus-input">
<div class="input-group-button">
<button type="button" class="button hollow circle" data-quantity="minus" data-field="quantity">
<i class="fa fa-minus" aria-hidden="true"></i>
</button>
</div>
<input class="input-group-field" type="number" name="quantity" value="0">
<div class="input-group-button">
<button type="button" class="button hollow circle" data-quantity="plus" data-field="quantity">
<i class="fa fa-plus" aria-hidden="true"></i>
</button>
</div>
</div>
.plus-minus-input {
align-items: center;
.input-group-field {
text-align: center;
margin-left: 0.5rem;
margin-right: 0.5rem;
padding: 1rem;
&::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
appearance: none;
}
}
.input-group-button {
.circle {
border-radius: 50%;
padding: 0.25em 0.8em;
}
}
}
.plus-minus-input {
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.plus-minus-input .input-group-field {
text-align: center;
margin-left: 0.5rem;
margin-right: 0.5rem;
padding: 1rem;
}
.plus-minus-input .input-group-field::-webkit-inner-spin-button,
.plus-minus-input .input-group-field ::-webkit-outer-spin-button {
-webkit-appearance: none;
appearance: none;
}
.plus-minus-input .input-group-button .circle {
border-radius: 50%;
padding: 0.25em 0.8em;
}
jQuery(document).ready(function(){
// This button will increment the value
$('[data-quantity="plus"]').click(function(e){
// Stop acting like a button
e.preventDefault();
// Get the field name
fieldName = $(this).attr('data-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
$('[data-quantity="minus"]').click(function(e) {
// Stop acting like a button
e.preventDefault();
// Get the field name
fieldName = $(this).attr('data-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);
}
});
});