/*
HTML Input Type SerialNumber - v1.0.3
License: GNU GENERAL PUBLIC LICENSE Version 3
GitHub: https://github.com/ish-101/HTML-Input-Type-SerialNumber
Dependency: jQuery 3.x.x
Made by Ishpreet Singh Bhasin
Website: http://ishpreet.tech/
GitHub: https://github.com/ish-101
*/
(function($)
{
$.fn.serialnumberinput = function(user_options)
{
var target = this;
var options = $.extend(
{
"separator": "",
"pieces":
[
],
}, user_options, this.data());
var digits = [];
var counter = -1;
$.each(options.pieces, function(i)
{
if (this.type === "separator")
{
if (this.separator === undefined)
{
this.separator = options.separator;
}
this.length = 1;
}
else
{
this.type = "character";
if (this.length === undefined)
{
this.length = 1;
}
}
this.length = Number(this.length);
this.length = Math.max(this.length, 0);
for (var j = 0; j < this.length; j++)
{
digits[counter + j + 1] = i;
}
counter += this.length;
});
target.attr(
{
'minlength': digits.length,
'maxlength': digits.length,
});
target.on('keyup', function(e)
{
var x = target.val().split("");
for (var i = 0; i < x.length; i++)
{
var reg_exp_pattern;
if (options.pieces[digits[i]].type !== "separator")
{
reg_exp_pattern = RegExp(options.pieces[digits[i]].pattern);
}
else
{
reg_exp_pattern = RegExp("[\\" + options.pieces[digits[i]].separator + "]");
}
if (! (reg_exp_pattern.test(x[i])) )
{
break;
}
}
if ((i < digits.length) && (options.pieces[digits[i]].type === "separator"))
{
x[i] = options.pieces[digits[i]].separator;
i++;
}
target.val(x.join("").substring(0, i));
});
return;
};
}(jQuery));