В браузерах 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;">

Все.

Источники

https://developer.mozilla.org/en/DOM/window.onbeforeunload

http://www.webmasterworld.com/forum91/4699.htm

  • Sharing

    Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather