如何在javascript中自动关闭括号和大括号

如何自动关闭括号[]和自动关闭大括号{}?我尝试过使用@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;

   }

});

但结果是这样的: {{ 或: [[。


慕娘9325324
浏览 89回答 1
1回答

郎朗坤

下面是一个使用 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>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript