使用AngularJS在Textarea中Shift + Enter

时间:2016-06-28 11:01:14

标签: javascript angularjs

此代码显示了如何使用指令通过点击'输入'来提交表单。而在textarea。但是,我希望能够切换+进入并转到下一行并按原样提交结果。无论何时提交,它都会显示在同一行中。如何按照用户的意愿在下一行提交和显示提交的文本。

<div ng-app="testApp" ng-controller="MyController">
  <textarea ng-model="foo" enter-submit="submit()"></textarea><br/>
  Last submitted text: {{ lastSubmitted }}<br/>
</div>

AngularJS代码:

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

function MyController($scope) {

  $scope.foo = ""
  $scope.lastSubmitted = ""

  $scope.submit = function() {
    $scope.lastSubmitted = $scope.foo; 
  }
}

app.directive('enterSubmit', function () {
    return {
      restrict: 'A',
      link: function (scope, elem, attrs) {

        elem.bind('keydown', function(event) {
          var code = event.keyCode || event.which;

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

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您似乎需要将\n\r转换为<br/>,然后使用ng-bind-html来清理字符串。

这是code example

您还必须包含angularjs sanitize js文件: <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-sanitize.js"></script>