bugfix> angularjs > 投稿

角のある素材コンポーネント(チェックボックス、選択、日付ピッカーなど)とEnterキー押下イベント間の相互作用を削除する方法はありますか?

<md-checkbox>
    check
</md-checkbox>

がここにありますプランカー 実際の例については。

どんな助けも感謝します。

ありがとう。

回答 2 件
  • ng-keydownでKeyPressを防ぐ

    次のHTMLマークアップを使用してEnterキーを押さないようにすることができます。

    <md-checkbox ng-keydown="preventEnter($event)">
       check
    </md-checkbox>
    
    

    ザ・ preventEnter  関数は次のようになります(コントローラーで宣言):

    function preventEnter(event) {
      if (event.keyCode == 13) { // enter keyCode
        event.preventDefault();
      }
    }
    
    

    Enterキーを押さないようにするカスタムディレクティブ 

    アプリでこれをより一般的に行いたい場合、カスタムディレクティブが必要です。

    app.directive('myPreventEnter', function() {
      return function(scope, element, attrs) {
        element.bind("keydown", function(event) {
        if(event.keyCode === 13) {
          event.preventDefault();
        }
     });
    };
    
    

    そして、すべての入力は次のとおりです。

    <md-checkbox my-prevent-enter>...</md-checkbox>
    
    

  • keyCode == 13の場合、デフォルトイベントのEventListenerとpeventを追加します

    var checks = [...document.getElementsByTagName("md-checkbox")];
    checks.forEach(function(c){
        c.addEventListener("keydown",
            function(e) { 
                if(e.keyCode === 13) e.preventDefault();
            }, 
        false);
    });
    
    

    http://plnkr.co/edit/SwsQMGMnxXerxvCaIYLG?p=preview

あなたの答え