[英]How to restrict IMEI number to only 15 digits without counting space after 4 digits
我为imei数字输入字段,该字段应仅包含15位数字,只能是数字。 我已经完成了,下面的代码仅需要15位数字,并在4位数字后留一个空格。
但是我在这里面临的主要问题是,如果您持有任何数字,它将需要18位数字。 因为当我们快速键入时,它也占用空间。 这是在这里尝试的小提琴链接
IMEI
$(".imei").on('keyup', function() {
var foo = $(this).val().split(" ").join("");
if (foo.length > 0) {
foo = foo.match(new RegExp('.{1,4}', 'g')).join(" ");
}
$(this).val(foo);
});
$(".imei").keydown(function (e) {
// Allow: backspace, delete, tab, escape, enter and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: Ctrl+C
(e.keyCode == 67 && e.ctrlKey === true) ||
// Allow: Ctrl+X
(e.keyCode == 88 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
将keyup
更改为keypress
:
$(".imei").on('keypress', function() {
仅在释放键时才会触发keyup
,而每次将键发送到输入时, keypress
都将触发。
保留keydown
代码,因为它用于限制允许的范围。
更新的提琴: http : //jsfiddle.net/1zLwgf66/1/
keypress
的问题在于它发生在按键被发送到输入之前。 您可以通过在运行代码之前将键添加到输入中来解决此问题,或者通过添加简单的setTimeout等到默认代码完成为止。 使用setTimeout时,将遇到关闭问题,因此您需要复制this
:
$(".imei").on('keypress', function() {
var inp = this;
setTimeout(function() {
var foo = $(inp).val().split(" ").join("");
更新的提琴: http : //jsfiddle.net/1zLwgf66/2/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.