シンプルなチャットアプリでテキストエリアを使用しています。ユーザーがシフト+リターンを押したときにのみキャリッジリターンを有効にし、ユーザーがリターンキーだけを押したときにフォームを送信したいと思います。
ngKeydown ディレクティブを使用しています。問題は、Enter キーを押すと、メッセージが正常に送信され、テキストエリアがクリアされ、その後、キャリッジ リターン si が挿入されることです。それは、イベントが伝播し続けることを意味します...
HTMLコードは次のとおりです。
<textarea ng-model="messageTyped" ng-keydown="checkReturn($event)"></textarea>
ここにangularjsコードがあります:
function chatController($scope, ChatService) {
$scope.messages = ChatService.messages
$scope.checkReturn = function(event) {
if (event.keyCode == 13 && !event.shiftKey) {
event.stopPropagation() // <------ this line seems to have no effect
// submit the message:
if ($scope.messageTyped) {
ChatService.SendMessage($scope.messageTyped)
$scope.messageTyped = ""
}
}
}
}
何が欠けているのかわからない...助けてくれてありがとう!