[英]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.