AngularJS意外地在textarea中留下了换行符

时间:2013-11-06 05:55:03

标签: javascript angularjs

当用户在输入textbox后按回车键时,内容应该推送到其他模型,textarea应该清除:

HTML

<div ng-controller="MyCtrl">
  <ul><li ng-repeat="msg in messages">{{msg.body}}</li></ul>
  <textarea ng-model="msg" ng-keydown="addMessage($event)"></textarea>
</div>

JS

function MyCtrl($scope) {
  $scope.messages = [];
  $scope.addMessage = function(e) {
    if (e.keyCode != 13) return;
    $scope.messages.push({body: $scope.msg});
    $scope.msg = "";
  }
}

但是,$scope.msg = ""会离开换行符,以便下一条消息从另一条空行textarea的第二行开始。我怎样才能完全清除它并在第一行开始下一个输入?这是一个fiddle来演示,这里是一个非角度的related question

1 个答案:

答案 0 :(得分:3)

一旦执行了事件处理程序(并清除了textarea),就会触发默认的事件处理机制 - 从按Enter键添加换行符。您应该阻止处理程序中的默认值(e.preventDefault()):fiddle

编辑:似乎问题已在您提到的链接中得到解答。