2016-10-19 4 views
0

imei番号の入力欄は15桁しか入力できません。私がやったことは、以下の私のコードはわずか15桁で、4桁の後にスペースが残っています。IMEI番号を4桁の後にスペースを数えずに15桁に制限する方法

しかし、私がここで直面している主な問題は、あなたが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(); 
     } 
    }); 

答えて

1

変更keyupkeypresstry here

にフィドルのリンクです:

$(".imei").on('keypress', function() { 

keyupはあなたがkeypressが起動しますが、キーを手放すだけで火災キーが入力に送信されるたびに

​​コードは許可されているとおりに使用してください。

更新フィドル:http://jsfiddle.net/1zLwgf66/1/


keypressの問題点は、キーの入力に送信されてきた前に発生していることです。これを回避するには、コードを実行する前にキーを入力に追加するか、または単純なsetTimeoutを追加してデフォルトコードが完了するまで待ってください。

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

更新フィドル:setTimeoutメソッドを使用すると、あなたがthisコピーする必要があるので、閉鎖の問題があるでしょうhttp://jsfiddle.net/1zLwgf66/2/

+0

本当にクールなおかげで.... –

関連する問題