Можете ли вы нажать вкладку в текстовой области, не меняя фокус при наборе текста? - PullRequest
0 голосов
/ 01 ноября 2019

HTML:

<textarea id="text"></textarea>

JavaScript:

document.querySelector('#text').addEventListener('keydown', e => {
  if (e.keyCode == 9) e.preventDefault();
});

Можете ли вы по-прежнему писать вкладку, не фокусируя текстовую область?

1 Ответ

1 голос
/ 01 ноября 2019

Добавить пробелы в конец при нажатии на вкладку:

document.querySelector('#text').addEventListener('keydown', e => {
    if (e.keyCode == 9) {
        e.preventDefault();
        document.querySelector('#text').value += "    ";
    }
});

Редактировать : Работал над вставкой пробелов, и я думаю, что это работает:

<textarea id="text"></textarea>
document.querySelector('#text').addEventListener('keydown', e => {
    if (e.keyCode == 9) {
        e.preventDefault();

        var ele = document.querySelector('#text');
        var caretPos = ele.selectionStart;
        var textAreaTxt = ele.value;
        var txtToAdd = "    ";
        ele.value = textAreaTxt.substring(0, caretPos) 
                    + txtToAdd 
                    + textAreaTxt.substring(caretPos);
        ele.selectionStart = caretPos + 4;
        ele.selectionEnd = caretPos + 4;
    }
});

С помощью https://stackoverflow.com/a/15977052/1171702 и общим поиском js add spaces at cursor position.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...