2017-03-28 9 views
0

我想提交文字點擊Ctrl + 輸入,但我找不到如何做到這一點。 我的代碼100%的作品進入或按Ctrl獨立的按鍵,例如:AngularJS在ng-keypress上執行方法:Ctrl + Enter

<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()"> 

它不工作(方法執行上開始點擊Enter沒有Ctrl)。 有人可以幫我嗎?我發現只有一個按鍵的例子。

+0

可能重複[AngularJS - 多鍵同時](http://stackoverflow.com/questions/23160124/angularjs-multiple-keypress-at-the-same-time) – cnorthfield

+0

是的,我可以實現它作爲指令,但是,我只是想確保沒有簡單的方法.. –

+0

指令是最乾淨的方式imo – 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> 

希望這有助於!