亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在javascript中自動關閉括號和大括號

如何在javascript中自動關閉括號和大括號

慕娘9325324 2023-07-14 16:27:19
如何自動關閉括號[]和自動關閉大括號{}?我嘗試過使用@Ivan Ganchev 的想法:maintextarea.addEventListener('keyup', function (ev) {let position = this.selectionStart;   if (ev.keyCode == 222) { // I replaced this with 219 for open bracket and curly bracket      let value = ev.target.value;      ev.target.value = [value.slice(0, position), ev.key, value.slice(position)].join('');      ev.target.selectionEnd = position;   }});但結果是這樣的: {{ 或: [[。
查看完整描述

1 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

下面是一個使用 aMap來存儲字符及其匹配的結束字符的示例,它允許輕松添加或自定義字符對。Map.get()從映射中獲取指定元素或返回undefined,以便進行緊湊檢查。

它還使用input偵聽器,因為keyup您不需要檢測修飾鍵并且感覺響應更快(盡管 IE < 9 不支持)

const closeChars = new Map([

? ['{', '}'],

? ['[', ']'],

? ['(', ')']

]);

? ??

maintextarea=document.getElementById('maintextarea');


maintextarea.addEventListener('input', function (e) {


? ? const pos = e.target.selectionStart;

? ? const val = [...e.target.value];

? ??

? ? const char = val.slice(pos-1, pos)[0];

? ? const closeChar = closeChars.get(char);

? ??

? ? if (closeChar) {

? ? ? val.splice(pos, 0, closeChar);

? ? ? e.target.value = val.join('');

? ? ? e.target.selectionEnd = pos;

? ? }

});

<textarea id="maintextarea" name="closebrackets" rows="8" cols="50">

</textarea>


查看完整回答
反對 回復 2023-07-14
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號