2017-03-28 10 views
0

を入力し、私はCtrlキー + のクリックでテキストを提出したいと思いますを入力しますが、私はそれを行う方法を見つけることができませんでした。 入力またはCtrlキーのための私のコードを100%作品例えば別々のキー押下、:私はのような何かをしようとしていながらAngularJSはNG-キー操作でメソッドを実行します。Ctrlキーを押しながら+

<div ng-show="hiddenFriendId != null" ng-keydown="$event.which === 13 && sendMessage()"> 
    <textarea id="messageText" placeholder="Input your message here. Use Ctrl + Enter to send your message" cols="40" rows="3" my-maxlength="3" ng-model="messageText"></textarea> 
</div> 

は、しかし - それは動作していない

<div ng-show="hiddenFriendId != null" ng-keydown="($event.which === 13 && $event.which === 17) && sendMessage()"> 

(メソッドの実行は、上の始まりのCtrlを入力せずにEnterをクリックします。 誰でも助けてくれますか?私は一回のキー入力だけの例を見つけました。

+0

[AngularJS - 同時に複数のキーを押す]の可能な複製(http://stackoverflow.com/questions/23160124/angularjs-multiple-keypress-at-the-same-time) – cnorthfield

+0

はい、実装できます指示として、しかし、私はちょうどより簡単な方法がないことを確認したい。 –

+0

指令は最もクリーンな方法です – cnorthfield

答えて

0

私は、同じ質問を持っていたし、あなたがしなければならないのは、属性のカスタムディレクティブを作成し、それを使用され、ここで簡単な解決策https://codepen.io/y__b__y/pen/afFec

を見つけました。 それは私のためにボスのように働いた:

DIRECTIVE

var app = angular.module('yourApp', []); 

app.directive('enterSubmit', function() { 
    return { 
     restrict: 'A', 
     link: function (scope, elem, attrs) {  
     elem.bind('keydown', function(event) { 
      var code = event.keyCode || event.which; 

      if (event.ctrlKey && code === 13) { 
      if (!event.shiftKey) { 
       event.preventDefault(); 
       scope.$apply(attrs.enterSubmit); 
      } 
      } 
     }); 
     } 
    } 
    }); 

HTML

<textarea enter-submit="sendMessage()" /></textarea> 

これが役に立てば幸い!

関連する問題