簡體   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