私は単純なチャットアプリケーションでテキストエリアを使用しています。ユーザーがshift + returnキーを押すと、キャリッジリターンを有効にして、ユーザーがリターンキーだけを押すとフォームを送信します。シフト+リターンのみでキャリッジリターンを有効にする方法
私はngKeydownディレクティブを使用しています。問題は、私がEnterキーを押すと、メッセージがOKに送られ、テキストエリアがクリアされ、その後に改行が挿入されます。これは、イベントが伝播し続ける意味...ここ
は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 = ""
}
}
}
}
私が欠けているのか分かりません... ご協力いただきありがとうございます !
ブラウザは、キーコードを受信した(と、それに反応した)あなたのイベントが発生する前に。私はすでに起こっている伝播を止めると言うでしょう:)。 – mingos