为了账号安全,请及时绑定邮箱和手机立即绑定

如何在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 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信