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>
添加回答
举报