1 回答

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
下面是一個(gè)使用 aMap
來存儲(chǔ)字符及其匹配的結(jié)束字符的示例,它允許輕松添加或自定義字符對(duì)。Map.get()
從映射中獲取指定元素或返回undefined
,以便進(jìn)行緊湊檢查。
它還使用input
偵聽器,因?yàn)?code>keyup您不需要檢測(cè)修飾鍵并且感覺響應(yīng)更快(盡管 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>
添加回答
舉報(bào)