Сайт TechStop-Ekb.Ru, логотип текстовый.Сайт Тех Стоп Екб Ру, логотип инфографика.

Event функция и событие. Submit Form, код обработки.

JS и клавиша Enter. Простой код нажатие кнопки формы.

Enter key event. Form input enter. Действие при нажатии кнопки. Обработчик.

У меня на сайте есть форма быстрого поиска информации по тексту кода страниц ... Это очень удобно, примитивно, быстро и без затрат дополнительного времени на открытие поисковых страниц машин интернета ... И, при этом - используются их колоссальные возможности индексации и интеллектуального поиска ... Современные механизмы взаимодействия с браузером - предполагают быстрое и не сфокусированное (на кнопке формы) действие - по нажатию клавиши Enter клавиатуры ... Приучаясь к удобствам - начинаешь машинально использовать Enter при поиске информации в интернете, но получаешь код 404 - страница не найдена ... Это начинает весьма напрягать и запутывать ...

Долгое время я не решался подступиться к изменению алгоритма работы формы поиска с текстовым вводом, путем добавления функции срабатывания по нажатию клавиши Enter ... Просто не знал, с чего начать ... Приведенные, в интернете, примеры кода - не только не впечатляли, но и пугали ... Первые же поиски выведут на современные фреймворки, типа Angular, React со встроенной привязкой данных, Vanilla JS и JQuery ... Если вы не работаете с фреймворками, этот путь - не лучшее начало ... Нам бы - что-нибудь попроще, типа обработка нажатия enter javascript средствами обычного простого JS, легким и доступным для понимания методом ...

Пример обычного кода формы с кнопкой ...
form name=MyForm ...
input type=text id=MyText ...
input type=button id=MyButton onclick=MyRun(); ...
/form ...
...
script ...
function MyRun() { ...
var tmptx=MyForm.MyText.value; ...
alert(tmptx); ...
} ...
/script ...
...
Здесь все предельно просто : введи текст, нажми на кнопку - получишь результат ... Обработка Enter - не будет работать (не задана) ...

Чтобы продублировать действие по кнопке - рекомендуется добавить обработку ввода по Enter в виде кода простого JS скрипта ... На странице

# ... stackoverflow.com, Click button with JS via Enter in text box.

... (нажатие кнопки на JavaScript через Enter в текстовом поле) - есть пример для простого кода взаимодействия скрипта, но не спешите радоваться, ибо здесь полно гвоздей, подводных камней и до фига ручной обработки драчевым напильником (flat bastard) ... Разберемся подробнее с этим примером ...
...
document.getElementById(MyText) ...
.addEventListener(keyup, function(event) { ...
event.preventDefault(); ...
if (event.keyCode === 13) { ...
document.getElementById(MyButton).click(); ...
} ...
});
...
Здесь - все почти понятно, как и неработоспособно - без доработки ...
# строка 2 : .addEventListener - даст ошибку, так как его значение : не определено или ноль ... Потому-что в первой строке надо было определить некую переменную var MyTmp = document.getElementById(*) - по которой и будет работать листенер (просмотрщик событий) MyTmp.addEventListener ...
# строка 3 : Третью непонятную строку - пока пропустить ...
# строка 4 : Четвертая - собственно сравнение : event.keyCode === 13, а является ли нажатая клавиша клавиатуры - Enter ? ... В примере - это запрашивается напрямую, но я не могу сказать точно : будет ли конструкция кода работать - без предварительного опроса состояния нажатия клавиш [или function(event) - должна быть вынесена / описана, как - отдельная функция] ...
# строка 5 : Пятая строка ... Если Enter нажат - программно нажать кнопку, а уж обработчик кнопки - выполнит возложенную на него функцию ...

Программное нажатие кнопки имеет смысл - только, если в этом есть явная необходимость ... Иначе - зачем так сложно ? ... Зачем идти через ж***, огородами - когда есть короткий путь ? ... Сразу запустите функцию, которая назначена кнопке - и дело с концом ... Зачем делать двойные преобразования, тратить процессорное время и путаться в переходах ? ... Наслаждайтесь работоспособным и не избыточным программным кодом ... Обратите внимание : когда функция прописывается в скрипте - она должна содержать ключевое слово : function MyRun() ; для вызова ее же из кода - достаточно написать : MyRun(); ...
if (event.keyCode === 13) { ...
MyRun(); ...
} ...

С этим разобрались ... Хорошо, теперь надо вникнуть в детали ... Как получить код нажатия клавиши ? ...

# ... w3schools.com, KeyboardEvent свойство keyCode.

... Нам уже дано достаточно программных средств, чтобы не только получить код, но и узнать его значение в разных кодировках, а также соблюсти кросс-браузерные решения совместимости ... Кстати, эта функция - кейлоггер в чистом виде ))) ... При работе с этой функцией, я (возможно, как и многие начинающие кодеры) впервые могут столкнуться и начать работать с передачей параметра в скобках функции JS [ до этого момента - как-то получалось обходится без него ))) ] ...
...
script ...
function MyKeyBoard(event) { ...
var xkbd = event.which || event.keyCode ...
if (xkbd === 13) { ...
MyRun(); ...
} ...
...
Отлично ... Нажатие кнопки клавиатуры Enter - отслеживается ... Функция нажатия кнопки - исполняется ... Самое главное : как запустить обработчик нажатия Энтер (ввод данных) ? ... Да - очень просто ... Так, легко и банально, что - просто изумительно ... В момент нажатия ENTER - фокус находится в текстовом поле, и именно на него - надо повесить обработку событий EVENT (в частности - обработку нажатия клавиш) ... Нужно назначить функцию обработчика - текстовому полю ввода (!!!) : form input type=text id=MyText onkeypress=MyKeyBoard(event); /form ... Правда, рекомендуется : для печатных букв и цифр - использовать onkeypress ; для функциональных клавиш - применять onkeyup или onkeydown ; хотя, на самом деле - все будет и так работоспособно ... Теперь - у нас есть для одного поля формы - два разных обработчика : стандартный (по кнопке) и альтернативный (по нажатию клавиши ввода / Энтер) ... Прикольно, но еще не все так гладко, как хотелось бы ...

Если используется JavaScript - то наверняка его код предназначен для работы в браузере интернета или в теле Web HTML страниц ... А, судя по их поведению - они ведут себя совершенно не так, как ожидается или хотелось бы ... А именно :

# ... coderoad.ru, Chrome, отправка формы по Enter, без onClick кнопки.

... Не все браузеры (на самом деле, практически ни один из них) - не вызовут событие click на кнопке отправки, если вы на самом деле не нажмете эту кнопку ... Они вызовут событие submit в форме ... Когда дело касается событий клавиатуры - эта информация становится бесценной ... А, submit - делает, что ? ... Правильно (см. начало статьи) - перегружает страницу с сервера, с параметрами формы ... И, если сервер настроен отсекать не валидные запросы, типа : *htm?bla-bla-bla - то, лучшее, что можно получить в этом случае, это - redirect 404 Not Found ...

Хорошо ...

# ... learn.javascript.ru, Отправка формы - событие и метод submit.

... Событие : submit ... Есть два основных способа отправить форму ... Нажать кнопку input type=submit или нажать Enter, находясь (фокус) на поле формы ... Оба действия - сгенерируют событие submit ... Обработчик может проверить данные, и если есть ошибки, показать их и вызвать event.preventDefault() - тогда форма не будет отправлена на сервер ... Форма не отправится благодаря return false ... form onsubmit=alert(сработка);return false ... Взаимосвязь между submit и click ... При отправке формы по нажатию Enter в текстовом поле, генерируется событие click на кнопке input type=submit ... Это довольно забавно, учитывая что никакого клика не было ))) ...

Вот, что значит : event.preventDefault(), упоминаемое в третьей строке первого примера ... Метод preventDefault() сообщает браузеру (или агенту вьюверу), что если событие не обрабатывается явно (например, выполняется с ошибками), его действие по умолчанию - не должно выполняться так, как обычно ... Однако - и это не единственный путь изменения поведения элементов в браузере ...

# ... overcoder.net, Что значит onsubmit = return false в JavaScript, jQuery.

... ? ... Можно ли сразу указать запрет отправки submit формы ? ... Можно ... form onsubmit=return false ... Когда return false - ваша форма не будет отправлена и не будет перенаправлена, а если она return true - ваша форма отправит и перенаправит (фактически является частью отправки) идентификатор, который вы упомянули в действии ...

JS Form Input Enter Key Event vs Button - обработка формы нажатием клавиши ввода.

Вот и подошли к заключительной части простейшей обработки Enter в коде скрипта JS веб страницы, где на самом деле - все легко и просто, хотя именно из-за правильной расстановки кавычек и закорючек - мне неоднократно не удавалось запустить скрипт в рабочем состоянии (из-за синтаксиса, но не из-за логики) ... Поэтому, здесь - я привожу, именно логику, так как ее наиболее трудно понять, ну а с синтаксисом, вы уж, как-нибудь - разбирайтесь сами ... Как, всегда - меня поражает, что при такой востребованности и проблемах с обработкой Enter - не так много хороших рабочих примеров ... И, как всегда - мне доставляет истинное удовольствие писать чистый, ясный и работоспособный код программирования на JavaScript ... Необязательно повторять весь пример - целиком : понимая суть - вы можете взять те участки / функции, которые наиболее подходят для решения ваших задач и модифицировать их - под свои потребности ...

form name=MyForm onsubmit=return false; ...
input type=text id=MyText onkeypress=MyKeyBoard(event); ...
input type=button id=MyButton onclick=MyRun(); ...
/form ...
...
script ...
// Выполнится при нажатии клавиши Enter ...
function MyKeyBoard(event) { ...
var xkbd = event.which || event.keyCode ...
if (xkbd === 13) { ...
MyRun(); ...
} ...
// Выполнится при нажатии кнопки Button ...
function MyRun() { ...
var tmptx=MyForm.MyText.value; ...
alert(tmptx); ...
} ...
/script ...

Январь, 2021 ...

Раздел computer : список всех страниц ...