В браузерах Mozilla и Internet Explorer существует два способа перейти на предыдущую страницу с клавиатуры – нажав alt+стрелка влево или backspace. На страницах, где приходится заполнять большое число полей в формах, пользователь может случайно нажать backspace когда фокус находится в элементе ввода, в котором backspace не обрабатывается (drop down choice, radio button). Это привет к переходу на предыдущую страницу из истории посещений и сбросу всех значений, введенных в форму. Избежать ухода со страницы по клавише backspace можно несколькими способами, два из которых приведены в статье.Способ 1.
Добавив следующий код на страницу, во всех случаях ухода со страницы будет появляться окошко с просьбой подтвердить действие.
1 2 3 4 5 6 7 8 9 | <script type="text/javascript"> window.onbeforeunload = exitWithPromt; function exitWithPromt() { return 'Уйти со страницы?'; } </script> |
Окошко будет появляться всегда, когда пользователь будет уходить со страницы. Добавив дополнительную логику можно не показывать окошко в тех случаях, когда пользователь не ввел никаких данных и уходит со страницы сознательно, например, выбрав другой элемент меню. Для того, чтобы окошко не показывалось нужно установить window.onbeforeunload в значение null.
Способ 2.
Если добавить следующий код в элементе body страницы, на странице перестанет работать клавиша backspace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <script type="text/javascript"> var bsp = false; function checkButton() { if (!bsp) { if(event.keyCode==8 || event.keyCode==13) { return false; } } } document.body.onkeydown = checkButton; </script> |
Однако, в текстовых полях ввода нам нужна возможность стирать символы, поэтому необходимо отключать запрет клавиши backspace в текстовых полях ввода. Делается это выставлением переменной bsb в значение true/false в событиях onfocus/onblur элементов ввода.
1 | <input type="text" onfocus="bsp=true;" onblur="bsp=false;"> |
Все.
Источники