javascript - 如何将 IMEI 号码限制为仅 15 位数字且不计算 4 位数字后的空格

标签 javascript jquery html

我有一个 IMEI 号码输入字段,该字段应该只包含 15 位数字,并且只能是数字。我已经完成了,下面的代码只需要 15 位数字,并在 4 位数字后留一个空格。

但我在这里面临的主要问题是,如果你持有任何数字,它将需要 18 位数字。因为当我们快速打字时,它也在计算空格。 这是指向 try here 的 fiddle 链接

串号

$(".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 代码,因为它用于限制允许的内容。

更新的 fiddle :http://jsfiddle.net/1zLwgf66/1/

<小时/>

keypress 的问题是它发生在按键发送到输入之前。您可以通过在运行代码之前将 key 添加到输入中来解决此问题,或者通过添加简单的 setTimeout 等待默认代码完成。使用 setTimeout 时,您会遇到关闭问题,因此您需要复制 this:

$(".imei").on('keypress', function() {
  var inp = this;
    setTimeout(function() {
      var foo = $(inp).val().split(" ").join(""); 

更新的 fiddle :http://jsfiddle.net/1zLwgf66/2/

关于javascript - 如何将 IMEI 号码限制为仅 15 位数字且不计算 4 位数字后的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40135680/

相关文章:

javascript - 无法在 AWS Lambda 中使用 NPM 包,require() 损坏

javascript - 这个 dat.gui add 函数中的第三个参数的含义是什么?

javascript - 在 Javascript 字符串中使用 Bootstrap 的 popover 插件

javascript - 用户使用 javascript 单击播放按钮后显示文本

c# - 如何将 HTML 元素的值分配为 ASP.NET 中 MVC Modal 类中定义的变量的值?

javascript - 将鼠标光标设置在文本 block 的末尾

forms - HTML5 中 "form"元素的新 "object"属性的用途是什么?

javascript - 遍历每个表行并向其添加超链接

javascript - .save() 不是函数 Mongoose

javascript - 如何让 elevateZoom 与两个 div 一起使用