protectDefault () также отключает ввод текста - PullRequest
0 голосов
/ 25 июня 2018

edit: я хочу использовать клавишу ввода, чтобы очистить текстовое поле после того, как я уже набрал текст.Извините за путаницу, которую я вызвал

edit 2 Ключ ко всему этому был отсутствующий параметр события.К сожалению, я как программист провал.

Я хочу отключить новую строку / разрыв, когда я нажимаю ввод.Однако версия 1 не работает, так как я не смогу вообще ввести текст.

Версия 2 работает, и я все еще могу очистить поле, продолжая вводить новые тексты.

Исходя из того, как я это интерпретирую, нажимаю ли я клавишу Shift + ввод вместе или нет, это все равно должно позволять мне печатать.Почему такая разница?Как опция по умолчанию клавиши Shift связана с включением / отключением ввода в текстовом поле?То, что я хотел бы сделать, это просто отключить новую строку / разрыв при нажатии кнопки ввода, но я обнаружил, что она также отключила часть ввода, что, по моему пониманию, не должно?

// html
<textarea type="text" id="box">Some text</textarea>

// javascript
document.getElementById('box').addEventListener('keypress', (e)=>{
   //version 1
   if(e.keyCode == 13){ //why does this version also disable any text input?
      e.preventDefault();
      document.getElementById('box').value = '';
   }

   //version 2
   if(e.keyCode == 13 && e.shiftKey){
      e.preventDefault();
      document.getElementById('box').value = '';
   }
});

1 Ответ

0 голосов
/ 25 июня 2018

Ваш код выдает ошибку, потому что он не знает, на что ссылается переменная e.Вы должны увидеть эту ошибку, если смотрите консоль ошибок.Чтобы это исправить, вы должны передать это в функцию.Это очищает учебник при нажатии Enter.Это то, что вы хотите?Я оставил строку, но закомментировал ее.

document.getElementById('box').addEventListener('keypress', (e)=>{
   //version 1
   if(e.keyCode == 13){ //why does this version also disable any text input?
      e.preventDefault();
      document.getElementById('box').value = '';
   }

});
<textarea type="text" id="box">Some text</textarea>
...