2016-06-28 6 views
0

このコードは、テキストエリア内で「入力」を押すことによってフォームを送信するためのディレクティブの使用方法を示しています。しかし、私はshift + enterをして​​次の行に行き、結果をそのまま提出したいと考えています。提出が行われるたびに、それは同じ行に表示されます。ユーザーが意図したとおりに、次の行に送信されたテキストを提出して表示するにはどうすればいいですか?AngularJSを使用してShift + Enterを押します。

<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を使用して文字列をサニタイズする必要があるようです。 <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-sanitize.js"></script>

:ここ

はあなたにもangularjsを含める必要がありますcode example

は、JSファイルをサニタイズです

関連する問題