<link rel="stylesheet" href="https://ux.verint.com/bootstrap-4.0.0/dist/fonts/css/verint_lux.css">
<link rel="stylesheet" href="https://ux.verint.com/bootstrap-4.0.0/dist/css/bootstrap.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://ux.verint.com/bootstrap-4.0.0/dist/js/bootstrap.bundle.js"></script>
<script src="https://ux.verint.com/bootstrap-4.0.0/dist/other/accessibility.js"></script>
<script src="https://ux.verint.com/bootstrap-4.0.0/dist/other/prism.min.js"></script>
<link rel="stylesheet" href="https://ux.verint.com/bootstrap-4.0.0/dist/other/prism-coy.min.css">
<div class="card">
<div class="card-header">Numeric Stepper <button id="toggleMarkup" type="button" class="btn btn-sm btn-outline-primary btn btn-fixed-width float-right m-0" onclick="$('pre' ).toggle()">Toggle Markup</button></div>
<div class="card-body">
<form>
<div class="form-group row">
<label for="inputKey" class="col-lg-2 col-form-label col-form-label-sm">Regular</label>
<div class="col-lg-4">
<div class="form-control-container">
<input type="number" class="form-control form-control-sm" placeholder="GuidingEnter a Textnumber" min="0" max="100" value="0">
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm increment" tabindex="-1">
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm decrement" tabindex="-1">
<i class="icon-down"></i>
</button>
</div>
</div>
</div>
<div class="col-lg-6">
<pre class="language-html"><code><script type="prism-html-markup"><div class="form-control-container">
<input type="number" class="form-control form-control-sm" placeholder="GuidingEnter a Textnumber" min="0" max="100" value="0">
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm increment" tabindex="-1">
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm decrement" tabindex="-1">
<i class="icon-down"></i>
</button>
</div>
</div></script></code></pre>
</div>
</div>
<div class="form-group row">
<label for="inputKey" class="col-lg-2 col-form-label col-form-label-sm">Disabled</label>
<div class="col-lg-4">
<div class="form-control-container">
<input type="number" class="form-control form-control-sm" placeholder="GuidingEnter a Textnumber" min="0" max="100" value="0" disabled>
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm increment" tabindex="-1" disabled>
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm decrement" tabindex="-1" disabled>
<i class="icon-down"></i>
</button>
</div>
</div>
</div>
<div class="col-lg-6">
<pre class="language-html"><code><script type="prism-html-markup"><div class="form-control-container">
<input type="number" class="form-control form-control-sm" placeholder="GuidingEnter a Textnumber" min="0" max="100" value="0" disabled>
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm increment" tabindex="-1" disabled>
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm decrement" tabindex="-1" disabled>
<i class="icon-down"></i>
</button>
</div>
</div></script></code></pre>
</div>
</div>
<div class="form-group row">
<label for="inputKey" class="col-lg-2 col-form-label col-form-label-sm">Read-Only</label>
<div class="col-lg-4">
<div class="form-control-container">
<input type="number" class="form-control form-control-sm" placeholder="GuidingEnter a Textnumber" min="0" max="100" value="0" readonly>
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm increment" tabindex="-1" disabled>
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm decrement" tabindex="-1" disabled>
<i class="icon-down"></i>
</button>
</div>
</div>
</div>
<div class="col-lg-6">
<pre class="language-html"><code><script type="prism-html-markup"><div class="form-control-container">
<input type="number" class="form-control form-control-sm" placeholder="GuidingEnter a Textnumber" min="0" max="100" value="0" readonly>
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm increment" tabindex="-1" disabled>
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm decrement" tabindex="-1" disabled>
<i class="icon-down"></i>
</button>
</div>
</div></script></code></pre>
</div>
</div>
<div class="form-group row">
<label for="inputKey" class="col-lg-2 col-form-label col-form-label-sm">Error<>Warning</label>
<div class="col-lg-4">
<div class="form-control-container">
<input type="number" class="form-control form-control-sm is-invalidwarning" placeholder="GuidingEnter a Textnumber" min="0" max="100" value="1010">
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm is-invalidwarning increment" tabindex="-1">
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm is-invalidwarning decrement" tabindex="-1">
<i class="icon-down"></i>
</button>
</div>
</div>
</div>
<div class="col-lg-6">
<pre class="language-html"><code><script type="prism-html-markup"><div class="form-control-container">
<input type="number" class="form-control form-control-sm is-invalidwarning" placeholder="GuidingEnter a Textnumber" min="0" max="100" value="1010">
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm is-invalidwarning increment" tabindex="-1">
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm is-invalidwarning decrement" tabindex="-1">
<i class="icon-down"></i>
</button>
</div>
</div></script></code></pre>
</div>
</div>
</form>
</div>
</div>
<script>
<div class="form-group row">
<label for="inputKey" class="col-lg-2 col-form-label col-form-label-sm">Error</label>
<div class="col-lg-4">
<div class="form-control-container">
<input type="number" class="form-control form-control-sm is-invalid" placeholder="Enter a number" min="0" max="100" value="101">
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm is-invalid increment" tabindex="-1">
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm is-invalid decrement" tabindex="-1">
<i class="icon-down"></i>
</button>
</div>
</div>
</div>
<div class="col-lg-6">
<pre class="language-html"><code><script type="prism-html-markup"><div class="form-control-container">
<input type="number" class="form-control form-control-sm is-invalid" placeholder="Enter a number" min="0" max="100" value="101">
<div class="btn-group btn-group-sm spinner-group">
<button type="button" class="btn btn-outline-light btn-sm is-invalid increment" tabindex="-1">
<i class="icon-up"></i>
</button>
<button type="button" class="btn btn-outline-light btn-sm is-invalid decrement" tabindex="-1">
<i class="icon-down"></i>
</button>
</div>
</div></script></code></pre>
</div>
</div>
</form>
</div>
</div>
<script>
// Spinner
jQuery.propHooks.disabled = {
set: function (el, value) {
if (el.disabled !== value) {
el.disabled = value;
value && $(el).trigger('disabledSet');
!value && $(el).trigger('enabledSet');
}
}
};
$('.form-control[type="number"]').on('keypress', function(e){
return e.metaKey || // cmd/ctrl
e.which <= 0 || // arrow keys
e.which == 8 || // delete key
/[0-9]/.test(String.fromCharCode(e.which)); // numbers
});
$('.form-control[type="number"]').on('keypressinput', function(e)(e){
if(!($(this).is(':disabled') || $(this).is('[readonly]'))) {
return e.metaKey || // cmd/ctrl let disableMinButton = e.which(Number(this.value)) <= 0 || // arrow keys
e.which == 8 || // delete key
/[0-9]/.test(String.fromCharCode(e.which)); // numbers
});
$('.form-control[type="number"]').on('input', function(e){
if(!($(this).is(':disabled') || $(this).is('[readonly]'))) {
Math.abs(this.getAttribute('min'));
$(this).siblings('.spinner-group').find('.decrement').prop("disabled", disableMinButton);
let disableMaxButton = (Number(this.value)) >= Math.abs(this.getAttribute('max'));
$(this).siblings('.spinner-group').find('.increment').prop("disabled", disableMaxButton);
let}
disableMinButton = $(Number(this.value)) <= Math.abs(this.getAttribute('min).toggleClass('is-invalid', $(this).is(':invalid'));
$(this).siblings('.spinner-group').find('.decrement').attr("disabled", disableMinButtonbutton').toggleClass('is-invalid', $(this).is(':invalid'));
});
let disableMaxButton = (Number(this.value)) >= Math.abs(this.getAttribute('max'));
$(this).siblings('.spinner-group$('.form-control[type="number"]').trigger("input"); // update bars at startup
function incr(elem) {
stepper = $(elem).closest('.form-control-container').find('.increment').attr("disabled", disableMaxButton);
}
$(this).toggleClass('is-invalid', $(this).is(':invalid'));
$(this).siblings('.spinner-groupform-control[type="number"]');
stepper.get(0).stepUp(1);
stepper.trigger("input");
}
function decr(elem) {
stepper = $(elem).closest('.form-control-container').find('button').toggleClass('is-invalid', $(this).is(':invalid').form-control[type="number"]');
stepper.get(0).stepDown(1);
stepper.trigger("input");
});
var increment = $('".form-control[type="number"]').trigger("input"); // update bars at startup
function incr(elem) {
btnspinner-group .increment");
increment.on( "click", function() {
incr(this);
});
var decrement = $(elem).closest('.form-control-container').find('.form-control[type="number"]'".spinner-group .decrement");
btn decrement.get(0).stepUp(1);on( "click", function() {
btn.trigger("input"decr(this);
});
function decr(elemvar incrTimeoutId = 0;
$(increment).on('mousedown', function() {
btnincrTimeoutId = $setInterval(elem).closest('.form-control-container').find('.form-control[type="number"]') => {incr(this);}, 40);
btn}).get(0).stepDown(1);
btn.trigger("input"on('mouseup mouseleave disabledSet', function() {
clearTimeout(incrTimeoutId);
});
var incrementdecrTimeoutId = $(".spinner-group .increment")0;
increment$(decrement).on( "click"'mousedown', function() {
incr(this);
});
var decrement = $(".spinner-group .decrement"decrTimeoutId = setInterval(() => {decr(this);}, 40);
decrement}).on( "click"'mouseup mouseleave disabledSet', function() {
decr(this clearTimeout(decrTimeoutId);
});
</script> |