ng-keypress上的AngularJS执行方法:Ctrl + Enter

时间:2017-03-28 21:13:00

标签: angularjs

我想点击 Ctrl + Enter 提交文字,但我找不到如何做到这一点。 我的代码100%适用于Enter或 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)。 任何人都可以帮助我吗?我发现只有一个按键的例子。

4 个答案:

答案 0 :(得分:2)

您可以使用

// Inside your controller

public keyDownEvent = ($event) => {
  if ($event.ctrlKey && $event.keyCode === 13) {
      this.submit();
  };
}
<!-- In your template -->

<input type="text" value="inputValue" ng-keydown="$panelRow.keyDownEvent($event)">

答案 1 :(得分:0)

我有同样的问题,在https://codepen.io/y__b__y/pen/afFec

找到了一个简单的解决方案

您所要做的就是在属性上创建自定义指令并使用它。 它对我来说就像老板一样:

<强>指令

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>

希望这有帮助!

答案 2 :(得分:0)

如果您需要 Ctrl + Enter ,您可以使用 if (($event.code == "Enter" && $event.which === 10)) 如果您需要 Shift + Enter ,您可以使用 if (($event.shiftKey && $event.which === 13))

答案 3 :(得分:0)

无需编写代码行,只需插入代码段

<input type="text" placeholder="Write a comment" ng-model="data" ng-keypress="($event.charCode==10)? myfunc() : return">

在下面的链接

中尝试将以上代码用于 Ctrl + Enter 新闻事件

https://jsfiddle.net/smqud8g0/2/