当用户在HTML文本输入上键入退格键时,如何避免导航回来?

时间:2009-07-21 02:02:35

标签: javascript jquery html input

Backspace是Navigate Back To The Last Page的浏览器热键。我知道当输入有焦点时,此热键被禁用。但是我将keyup和keydown事件绑定到这个输入,我写的东西引起了这个麻烦。

你知道解决方案吗?

7 个答案:

答案 0 :(得分:1)

当您从input元素处理事件时,在返回之前取消该事件的冒泡。

答案 1 :(得分:1)

我有类似的需求,即中和Backspace键引起的Back操作,我在这个网站上遇到了一个解决方案

http://www.webmasterworld.com/javascript/3785986.htm

我希望它会对你有所帮助。

答案 2 :(得分:0)

问题是由返回onKeyDown事件之前的输入删除引起的。

答案 3 :(得分:0)

尝试使用onKeyDown或onKeyPress

if (event.keyCode==8)//where 8 ascii code of backspace
{
retunr;
}

答案 4 :(得分:0)

您可以尝试挂钩window.onbeforeunload事件以防止此类意外导航。

答案 5 :(得分:0)

你可以做:

  1. 您可以为InputField设置侦听器并查看所有keydown事件。
  2. 在事件监听器中,您可以创建一个缓冲区变量,该变量具有真实的InputField值。
  3. 因此,如果你接受一个非Backspace代码,那么缓冲区的新值将是InputField值,你使用hotKeyFunction,否则InputField的新值将是缓冲区值,你得到InputField的正常工作。

答案 6 :(得分:0)

if (typeof(window.event)!='undefined')//ie
   {document.onkeydown=function()
                       {var tag_name=event.srcElement.tagName.toUpperCase();
                        if (tag_name!='INPUT' && tag_name!='TEXTAREA')
                           {return event.keyCode!=8;
                           }
                       };
   }
else //firefox, chrome
    {window.addEventListener('keydown',function(evt){if (evt.keyCode==8){evt.preventDefault();}}, true);
    }