【问题标题】:AngularJS unexpectedly leaves line break in textareaAngularJS 意外地在 textarea 中留下换行符
【发布时间】:2013-11-06 05:55:02
【问题描述】:

当用户在输入我的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

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    一旦你的事件处理程序被执行(并且你清除了文本区域),默认的事件处理机制就会被触发——它会从按下回车键添加换行符。您应该防止处理程序中的默认值(e.preventDefault()):fiddle

    编辑:您提到的链接中似乎已经回答了问题。

    【讨论】:

    • 好电话,出于某种原因,我认为return false 会做到这一点,并认为这是一个不同的问题。谢谢!
    • return false 可能无法完成它,因为 angularjs 将您提供的函数包装在其自己的事件处理程序中(如果您这样做,则不会 return false
    猜你喜欢
    • 1970-01-01
    • 2015-08-16
    • 2014-08-16
    • 2017-05-17
    • 1970-01-01
    • 2013-11-10
    • 2014-11-01
    相关资源
    最近更新 更多