JSFiddle - React, Tailwind, and code Playground
HTML
<div>value:
<input id="myInput" value="0" />
</div>
<div>int type:
<select id="intTypes">
<option value="tinyint">tinyint</option>
<option value="smallint">smallint</option>
<option value="mediumint">mediumint</option>
<option value="int">int</option>
<option value="bigint">bigint</option>
</select>
</div>
<div>unsigned:
<input id="unsigned" type="checkbox">
</div>
<div>
<button id="verify">Verify</button> <i>view result in console</i>
</div>
CSS
div {
margin: 5px 0;
}
JavaScript
jQuery.fn.isInSqlIntRange = function (options) {
var settings = $.extend({
'type': 'int',
'unsigned': false
}, options);
var min, max, val = this.val();
if (val === '' || Number(val) === NaN) {
return false;
}
val = Number(val);
switch (settings.type) {
case 'tinyint':
min = settings.unsigned ? 0 : -128;
max = settings.unsigned ? 255 : 127;
break;
case 'smallint':
min = settings.unsigned ? 0 : -32768;
max = settings.unsigned ? 65535 : 32767;
break;
case 'mediumint':
min = settings.unsigned ? 0 : -8388608;
max = settings.unsigned ? 16777215 : 8388607;
break;
case 'int':
case 'integer':
min = settings.unsigned ? 0 : -2147483648;
max = settings.unsigned ? 4294967295 : 2147483647;
break;
case 'bigint':
min = settings.unsigned ? 0 : -9223372036854775808;
max = settings.unsigned ? 18446744073709551615 : 9223372036854775807;
break;
default:
throw typeError('jQuery.isInIntRange() - type is undefined or invalid');
}
return val >= min && val <= max;
}
$("#verify").on('click', function () {
var type = 'tinyint';
var options = {
'type': $("#intTypes").val(),
'unsigned': $("#unsigned").prop('checked') ? true : false
};
console.log(options, $("#myInput").val(), $("#myInput").isInSqlIntRange(options));
});