За последние 24 часа нас посетили 52167 программистов и 1765 роботов. Сейчас ищет 841 программист ...

Проверка перед выполнением действия.

Тема в разделе "JavaScript и AJAX", создана пользователем Kocapb, 18 июн 2010.

  1. Kocapb

    Kocapb Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    169
    Симпатии:
    0
    Здравствуйте, столкнулся с проблемой следующего характера: "Случайное нажатие кнопки назад".
    Т.е. в процессе заполнения формы, пользователь случайным образом нажимает кнопку "Назад" по истории или на клавиатуре "Backspace". Можно ли с помощью javascript отловить эти события?
    Алгоритм я представляю так:
    Если произошло нажатия "Backspace" то запросить подтверждение этого события в отдельном окне.
    Да - продолжить. Нет - отменить событие.
    Вроде с первой частью разобрался:
    HTML:
    1.  
    2.   <script>
    3.        document.onkeyup=keyup
    4.        function keyup(e) {
    5.          e = e || window.event
    6.          if (8==e.keyCode) alert("space")
    7.        }
    8.      </script>
    9. </head>
    10.  
    но почему-то не всегда срабатывает.
     
  2. ARS

    ARS Активный пользователь

    С нами с:
    18 июн 2010
    Сообщения:
    1
    Симпатии:
    0
    [js]
    <script type="text/javascript">

    window.onbeforeunload = exitWithPromt;

    function exitWithPromt() {
    return 'Уйти со страницы?';
    }

    </script>
    [/js]
     
  3. Kocapb

    Kocapb Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    169
    Симпатии:
    0
    Спасибо, отчасти решает проблему. НО есть проблема в том, что это окно всё время выскакивает даже если надо перегрузить страницу.
    Нашёл 2ой способ, но работает только в EI =)
    HTML:
    1.  
    2. <script type="text/javascript">
    3.  
    4.     var bsp = false;
    5.    
    6.     function checkButton() {
    7.         if (!bsp) {
    8.             if(event.keyCode==8 || event.keyCode==13) {
    9.                 return false;
    10.             }
    11.         }    
    12.     }
    13.  
    14.     document.body.onkeydown = checkButton;
    15.  
    16.  
    17. </body>
    18.  
     
  4. Kocapb

    Kocapb Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    169
    Симпатии:
    0
    Вроде перемудрил, но работает =)
    [js]
    var bsp = false;

    if(navigator.appName.indexOf("Netscape") != -1){
    window.document.onkeydown = function checkButton(e) {
    if (!bsp) {
    var key;
    if(window.event) key = window.event.keyKode;
    else if (e) key = e.which;
    if(key==8 || key==13) {
    return false;
    }
    }
    }
    }
    if(navigator.appName.indexOf("Microsoft") != -1)
    {
    window.document.onkeydown = function checkButton() {
    if (!bsp) {
    if(event.keyCode==8 || event.keyCode==13) {
    return false;
    }
    }
    }
    }

    [/js]
     
  5. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    window.document.onkeydown = function checkButton ...
    Это надо прописывать для каждого браузера.
    Для IE не прописано.
     
  6. Kocapb

    Kocapb Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    169
    Симпатии:
    0
    да спс не внимательность - главный враг =)