Изменение входного значения внутри тегов формы при нажатии клавиши ВВОД - PullRequest
0 голосов
/ 15 января 2019

Рассмотрим следующий HTML-код:

<form>
    <div>
        <input type ="text" id="myInput"/>
    </div>
</form>

Мне бы хотелось, чтобы, когда пользователь напишет какой-нибудь текст и нажмет клавишу ВВОД, значение ввода изменится на слово «Hello».

Для этого я добавляю следующий код Java Script:

<script>
  var input = document.getElementById("myInput");
  input.addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
      input.value ="Hello";
    }
});
</script>

К сожалению, это не сработало, поскольку, когда я пишу текст и нажимаю клавишу ВВОД, текст исчез (вместо этогопоказ мира "Привет").

Немного покопавшись в проблеме, я понял, что, если бы я убрал теги "form" из HTML-кода, он бы работал нормально.

У меня два вопроса:

1) Почему это происходит?

2) Как решить эту проблему, не удаляя теги "form"?

Любая помощь будет оценена !!

Ответы [ 3 ]

0 голосов
/ 15 января 2019

Функция Form в HTML выглядит для отправки введенных данных. Обычно вы добавляете «действие», которое просто отправляет вашу форму на сервер (т.е. action = "action.php"). Поскольку «действий» нет, вы просто обновляете страницу. Чтобы обойти это, вам нужно будет использовать AJAX и функцию protectDefault (), чтобы остановить отправку формы (обновление страницы).

0 голосов
/ 15 января 2019
  1. Это происходит потому, что «Enter» пытается отправить форму.

  2. Перенос кода в обработчик событий onSubmit может исправить проблему без удаления тега формы.

Я приложил фрагмент. Дайте мне знать, если это то, что вы ожидаете.

<form onSubmit="changeToHello(event)">
    <div>
        <input type ="text" id="myInput"/>
    </div>
</form>
<script>
function changeToHello(event) {
  event.preventDefault();
  var input = document.getElementById("myInput");
  input.value ="Hello";
}
</script>
0 голосов
/ 15 января 2019

preventDefault() предотвращает поведение события по умолчанию.

Здесь нет события по умолчанию для события keyup, которое можно предотвратить, поэтому оно не имеет никакого эффекта.

Событие нажатия клавиши также запускается, и его поведение по умолчанию при нажатии клавиши ввода - отправка формы.

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