2016-04-13 6 views
1

私は、ユーザーがクレジットカード番号、銀行コード番号、2ステップコードなどを入力するためのシステムを構築しました。自動進行を制御する小さなjQueryスクリプトFirefox(45.0.2、他のFFでテストされていないもの)を除いて、maxlengthに達するとほとんどのデバイスとブラウザでうまくいくようです。自動進行入力フィールドはFirefoxで0を削除します

Firefoxでは、入力された「0」が自動的に削除されますが、これは実際の問題です。確かに、私はそこで最も強力なjqueryスクリプタではありませんが、この動作を引き起こすのは私のコード内にあるものは解決できません。

私はここcodepen設定しました:(いくつかのSOスレッドから派生して)私のスクリプトを使用してhttp://codepen.io/anon/pen/ZWxYag

を:

var $single_degit = $('input.singleDigit'); 
     $single_degit.keyup(function (e) { 
      var $elm = $(this); 
      if (e.which == 8) { 
      //backspace 
       $elm.prevAll($single_degit).first().focus(); 
     } else if ((e.which > 47 && e.which < 58) || (e.which > 96 && e.which < 106)) { 
      $elm.next($single_degit).focus(); 
     } else { 
      $elm.val(''); 
      return false; 
     } 
    }); 

は、私が何とかしてこの動作を書かれていますか?または私はバグを経験していますか?ありがとう!

答えて

2

問題はである:

else if ((e.which > 47 && e.which < 58) || (e.which > 96 && e.which < 106)) 

あなたのコードは次のようになります。

else if ((e.which > 47 && e.which < 58) || (e.which > 95 && e.which < 106)) 

(私はあなたが話しているゼロであると仮定)テンキー0はキーコード96を使用するので、あなたの声明には含まれていません。通常の0(キーコード48)を占めていますが、96ではありません。

スペルチェックのような機能を実装しているプラ​​ットフォームはキーコード0または229を返します。後で。

http://codepen.io/anon/pen/eZMmQN

+0

迅速な対応をいただきありがとうございます。 –

+0

あなたの脳をさらに@ Nasapc123で選ぶのは申し訳ありませんが、アンドロイドのブラウザが数字を入力するのを完全に防ぐスクリプトの問題がありますか?キーボードマッピングがソフトキーボードと一致しないのだろうか? –

+1

更新されたcodepenを含めるように私の答えを編集しました。これはクロスプラットフォームで動作し、キーコード0または229のみを返す問題に遭遇し、ユーザーがフィールドに貼り付けるなどのイベントを処理する必要があります。 – JaanRaadik

関連する問題