2016-01-06 75 views
1

我有這樣的代碼的工作,這將不是在IE 10或Firefox 43工作:String.fromCodePoint()不會工作在IE和tab鍵不會在Firefox

app.directive('limitChars', function() { 
    return { 
     restrict: 'A', 
     link: function (_scope, _element) { 
      var allowedChars = /[a-z0-9, ]/; 

      _element.on("keypress", function (e) { 
       var key = String.fromCodePoint(e.which).toLowerCase(); 

       if (!allowedChars.test(key) && e.which != 13 && e.which != 8) { 
        return false; 
       } 
      }); 
     } 
    }; 
}); 

在IE 10,我得到了「對象不支持屬性或方法fomCodePoint」的錯誤。

在Firefox 43中,「tab」鍵不起作用。

在Chrome中,一切正常。

任何人都知道爲什麼?謝謝。

更新:

formCharCode()似乎在IE工作現在。但是Tab鍵在Firefox中仍然無法使用。

+0

'fomCodePoint'是較新的,你可以在舊的瀏覽器 – dandavis

+0

錯誤消息解釋了所有在IE中使用'fromCharCode'。在FF中,我認爲TAB的默認動作可能會影響你的處理程序,你必須防止默認動作。 – Teemu

回答

2

同時使用e.keyCodee.which。下面的作品在所有瀏覽器:

app.directive('limitChars', function(){ 
     return { 
      restrict: 'A', 
      link: function(_scope,_element) { 
       var allowedChars = /[a-z0-9, ]/; 

       _element.on("keypress",function(e){ 
        var keyCode = e.keyCode || e.which; 

        var key = String.fromCharCode(keyCode).toLowerCase(); 

        if (!allowedChars.test(key) && keyCode != 8 && keyCode != 9 && keyCode != 13 && keyCode != 16) { 
         return false; 
        } 
       }); 
      } 
     }; 
    }); 
相關問題