$(document).ready(function () { InitIntegerInputs(); }); function InitIntegerInputs() { var integerInputSelector = "input.integer-input"; $(integerInputSelector).each(function (i, item) { IntegerInputInitializer.init(item); }); } var IntegerInputInitializer = { init: function (input) { ($(input) as any).inputmask({ alias: "numeric", regex: "[0-9]*", allowMinus: false, rightAlign: false, digits: 0, }); $(input).keypress(event => IntegerValidator.validateElement(event.target)); $(input).change(event => IntegerValidator.renderValidation(event.target)); } }; let IntegerValidator = { renderValidation: function (domInput) { let input: any = $(domInput); let inputVal: any = $(input).val(); reset(input); if ($.trim(inputVal)) { if (this.validateElement(input)) { input.addClass('integer-input__valid'); return true; } else if (input.hasClass('required')) { input.addClass('integer-input__invalid'); MessageShower.showError($(input).attr('data-validate-error-msg')); } } else if (input.hasClass('required')) { input.addClass('integer-input__invalid'); } return false; function reset(input) { input.removeClass('integer-input__valid'); input.removeClass('integer-input__invalid'); } }, validate: function (event) { let input = $(event.target); return this.validateElement(input); }, validateElement: function (input) { let inputVal: number = ($(input) as any).val().trim() as number; let minValue: number = +$(input).attr('data-min-value'); let maxValue: number = +$(input).attr('data-max-value'); return inputVal <= maxValue && inputVal >= minValue; } }