2016-04-13 52 views
1

我爲用戶構建了一個系統,用於輸入信用卡號,銀行代碼號,兩步代碼等。控制自動進度的小型jQuery腳本在大多數設備和瀏覽器上,達到maxlength似乎都很好,除了Firefox(45.0.2,未在其他FF上測試)。自動進度輸入字段在Firefox中刪除'0'

使用Firefox,它會自動刪除輸入的任何'0',這是一個真正的問題。無可否認,我並不是那裏最強大的jquery scripter,但是我無法弄清楚我的代碼中觸發了這種行爲。

我已經設置了這裏codepen:http://codepen.io/anon/pen/ZWxYag

使用我的腳本(從幾個SO線程派生):

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.

更新後的codepen低於此值將更好地跨平臺,因爲實現諸如拼寫檢查等功能的平臺將返回鍵碼0或229,而不是代碼之後。

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

+0

感謝您的快速響應,修復和工作! –

+0

對不起,你可以進一步@ Nasapc123,但你可以看到一個腳本的問題,將完全阻止Android瀏覽器輸入數字?我想知道鍵盤映射是否與軟鍵盤不匹配? –

+1

我編輯了我的答案以包含更新後的codepen。當您遇到僅返回鍵碼0或229的問題時,這將起到跨平臺的作用,並且應該處理事件,例如粘貼到該字段中的用戶,這些用戶之前不會被過濾。 – JaanRaadik