#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});
}
});