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

Простой код JS. Клавиша 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 скрипта ... На странице 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(); ...
} ...

С этим разобрались ... Хорошо, теперь надо вникнуть в детали ... Как получить код нажатия клавиши ? ... 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 страниц ... А, судя по их поведению - они ведут себя совершенно не так, как ожидается или хотелось бы ... А именно : Chrome, отправка формы по Enter, без onClick кнопки ... Не все браузеры (на самом деле, практически ни один из них) - не вызовут событие click на кнопке отправки, если вы на самом деле не нажмете эту кнопку ... Они вызовут событие submit в форме ... Когда дело касается событий клавиатуры - эта информация становится бесценной ... А, submit - делает, что ? ... Правильно (см. начало статьи) - перегружает страницу с сервера, с параметрами формы ... И, если сервер настроен отсекать не валидные запросы, типа : *htm?bla-bla-bla - то, лучшее, что можно получить в этом случае, это - redirect 404 Not Found ...

Хорошо ... Отправка формы - событие и метод 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() сообщает браузеру (или агенту вьюверу), что если событие не обрабатывается явно (например, выполняется с ошибками), его действие по умолчанию - не должно выполняться так, как обычно ... Однако - и это не единственный путь изменения поведения элементов в браузере ... Что значит 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 ...

Популярные теги для сайта.

Самые популярные теги, краткое описание более 1000 страниц менее, чем в 100 ключевых словах ... Чтобы найти более подробную информацию, самое простое - использовать поиск по сайту на соответствующие запросу - ключевое слово или фразу ...

Decoder данных ... Авто ... Бесплатно онлайн ... Список ПК программ ... Россия ... Погода ... ЭБУ ... Sat ... Torrent tracker ... Работа двигателя ... На трассе и по маршруту ... Диагностика ... ЦУП ... УпрДор ... Метео ... Гидрометцентр ... Москва ... Екатеринбург ... Смотреть прогноз ... Расчет ... Калькулятор ... Онлайн ... Вeacon ... Calculator ... COVID ... ECU ... Meritor ... Motor ... OBD ... SDR ... Telemetry ... Tool ... USB ... Windows ... Радио ... Развлекательный сайт ... Новости сегодня ... Связь ... Ремонт ... Системы ... Сканер ... Состояние трассы ... Диагностика двигателя ... Длина волны ... Программы для компьютера ...

Быстрый поиск по сайту :


TechStop-Ekb.ru : познавательные развлечения, техника, технологии ... На сайте, для работы и соответствия спецификациям - используются ... Протокол HTTPS шифрования для безопасного соединения с сервером и защиты пользовательских данных ... Антивирус DrWeb для превентивной защиты пользователей от интернет угроз и вирусов ... Ресурс входит в рейтинги Рамблер Топ 100 (познавательно-развлекательные сайты) и Mail Top 100 (авто мото информация) ...

Тех Стоп Екб RU (РФ) официальный сайт, популярные темы, погода, новости, обзоры с картинками, бесплатно, актуально, без регистрации ... Смотреть утром, днем, вечером и ночью - круглосуточно онлайн ...

Меню раздела, новости и новые страницы.

... | ... ТехСтоп Екб ... | ... Главное меню ... | ... Быстрый поиск ... | ...


© 2021 ТехСтоп Екатеринбург.

С 2016++ техническая остановка создается вместе с вами и для вас ...