Каков код ключа для открытой фигурной скобки {

#javascript #jquery #codemirror #keycode

#javascript #jquery #codemirror #ключевой код

Вопрос:

Я создаю экземпляр code-mirror с системой автозаполнения, которая активируется при любом нажатии клавиши. Но всякий раз, когда вы вводите: { автозаполнение по-прежнему отображается, даже несмотря на то, что есть оператор if, блокирующий отображение автозаполнения кода ключа 219. Причина, по которой я хочу запретить { открывать меню автозаполнения, заключается в том, что пользователь обычно нажимает Enter, чтобы перейти вниз по строке, но он вводит предложение из автозаполнения. Я уже пробовал использовать charCode, но это не сработало.

вот мой код:

 editor.on("keyup", function (cm, event) {
            if (!cm.state.completionActive amp;amp; event.keyCode != 13 amp;amp; event.keyCode != 219) { 
                CodeMirror.commands.autocomplete(cm, null, {completeSingle: false});
            }
        });
  

Я хочу, чтобы он не открывал меню автозаполнения в codemirror всякий раз, когда пользователь нажимает {

Комментарии:

1. Если вы не уверены, что это такое, либо найдите это в Интернете, либо просто войдите event.keyCode в консоль и нажмите эту клавишу и посмотрите, что она показывает в консоли

2. Да, я сделал это, но он имеет тот же результат, что и [

3. Обратите внимание, что добавление другого прослушивателя не переопределит предыдущие, установленные api

Ответ №1:

Вы используете amp;amp; с ключом Enter и { поэтому он никогда не перейдет в условие if

 editor.on("keyup", function (cm, event) {
        if (!cm.state.completionActive amp;amp; (event.keyCode != 13 || event.charCode != 219)) { 
            CodeMirror.commands.autocomplete(cm, null, {completeSingle: false});
        }
    });
  

Комментарии:

1. Нет, вы находитесь в состоянии, о котором говорите, что нужно нажать Enter amp;amp; { , это должно быть || потому что вы не можете нажать Enter and { одновременно, это два разных события

Ответ №2:

Я разобрался с этим, заменив keyCode на charCode и изменив событие на keypress .

 editor.on("keypress", function (cm, event) {
            if (!cm.state.completionActive amp;amp; event.charCode != 13 amp;amp; event.charCode != 123) {
                CodeMirror.commands.autocomplete(cm, null, {completeSingle: false});
            }
        });