繁体   English   中英

如何将IMEI号码限制为仅15位,而无需在4位后计算空格

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM