2016-06-28 101 views
0

此代码显示如何使用指令在textarea中按'enter'来提交表单。但是,我希望能够转移+进入下一行并按照原样提交结果。无论何时提交,都显示在同一行中。如何按照用户的意愿提交并显示下一行中的提交文本。Shift +在使用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); 
      } 
      } 
     }); 
     } 
    } 
    }); 

我该怎么办?

回答

0

它看起来像你需要将\n\r转换成<br/>然后使用ng-bind-html消毒字符串。

这里是一个code example

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