Here is my rather complicated version, you just need to give the class "mkdminusplus" to your div: <div class="mkdminusplus" defaultval="50"></div> and then add
<script> jQuery(function(){ jQuery('.mkdminusplus').append('<span class="mkdminus"><i class="icon-minus-sign"></i></span><input class="mkdvalue" type="number" value=""><span class="mkdplus"><i class="icon-plus-sign"></i></span>'); jQuery('.mkdminusplus').each(function(){ if (jQuery(this).attr('defaultval') == undefined) jQuery(this).attr('defaultval','0'); jQuery(this).find('.mkdvalue').val(jQuery(this).attr('defaultval')); }); jQuery('.mkdminus').bind('click', function() { valueElement=jQuery(this).parent().find('.mkdvalue'); defaultval=(jQuery(this).parent().attr('defaultval') !== 'undefined' && jQuery(this).parent().attr('defaultval') !== 'false' )?jQuery(this).parent().attr('defaultval'):jQuery(this).parent().attr('defaultval','0'); console.log(jQuery.isNumeric(parseInt(valueElement.val()))) if (!jQuery.isNumeric(parseInt(valueElement.val()))) valueElement.val(defaultval); var increment=-1; valueElement.val(Math.max(parseInt(valueElement.val()) + increment, 0)); }); jQuery('.mkdplus').bind('click', function() { valueElement=jQuery(this).parent().find('.mkdvalue'); defaultval=(jQuery(this).parent().attr('defaultval') !== undefined && jQuery(this).parent().attr('defaultval') !== 'false' )?parseInt(jQuery(this).parent().attr('defaultval')):parseInt(jQuery(this).parent().attr('defaultval','0')); console.log(jQuery.isNumeric(parseInt(valueElement.val()))) if (!jQuery.isNumeric(parseInt(valueElement.val()))) valueElement.val(defaultval); var increment=1; valueElement.val(Math.max(parseInt(valueElement.val()) + increment, 0)); }); jQuery('.mkdvalue').on('keyup', function () { jQuery(this).val(jQuery(this).val().replace(/[^0-9]/gi, '')); }); }); </script>
I used bootstrap icons for buttons, but you can also make hardcode - and + like that! ;-) Hope this helps others!
source share