忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/05    04« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »06

Enter で送信・Shift+Enter で改行する @ Vue

ステラナイツ向けツールで必要になったので。ついでに「」をさっと挿入する機能を作ったときの書き方も載せとく。実際に動かしているコード。 https://github.com/Shunshun94/StellarKnightsTools/blob/master/client/js/chat/commonChat.js

<textarea 
	v-model="text"
	@keydown.enter="submit"
	@keydown.ctrl.219="insertParentheses"></textarea>
	methods: {
		insertParentheses: function(e) {
			if(this.text.trim().length) {
				this.text = `「${this.text}」` 
			} else {
				this.text = '「」';

				// 少し処理を遅延させないとカーソルの移動が DOM の再描画で上書きされてしまう
				// 描画終わりそうな短い時間待った上でカーソルを動かす
				setTimeout(()=>{
					e.target.setSelectionRange(1,1);
				}, 200);
			}
		},
		submit: function(e) {
			if(e.shiftKey) {
				return;
			}

			// これで「Enter を叩くと改行が入る」というデフォルトの挙動をキャンセルする
			e.preventDefault();
			const text = this.text.trim();
			this.text = '';
			this.$emit(`chat-input-events-sendChat`, text);
		}
	}
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R