【问题标题】:How to avoid navigate back when the user types backspace on a HTML text input?当用户在 HTML 文本输入中键入退格键时,如何避免向后导航?
【发布时间】:2009-07-21 02:02:34
【问题描述】:

Backspace 是浏览器返回最后一页的热键。我知道当输入具有焦点时,此热键被禁用。但是我有 keyup 和 keydown 事件绑定到这个输入,我写的东西导致了这个问题。

你知道解决办法吗?

【问题讨论】:

  • 您的问题是输入具有焦点并且退格键正在向后导航,还是您想要它而不是它?您看到的具体行为是什么?
  • 如果你怀疑你写的东西导致了这个问题,最好把代码贴在这里。否则几乎不可能确定解决方案。
  • 没错。它不能向后导航。不幸的是,目前它正在这样做。
  • 你能描述一下这个“我写的东西”的作用吗?

标签: javascript jquery html input


【解决方案1】:

当您处理了来自输入元素的事件后,在返回之前取消该事件的冒泡。

【讨论】:

  • event.preventDefault() 或 event.stopPropagation() 都解决了 IE 和 Chrome 上的问题。但是我还没有找到火狐的解决方案quirksmode.org/js/events_order.html
【解决方案2】:

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

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

希望对你有帮助。

【讨论】:

    【解决方案3】:

    问题是由于在返回 onKeyDown 事件之前删除了输入。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        你可以做的:

        1. 您可以为 InputField 设置监听器并查看所有按键事件。
        2. 在事件监听器中,您可以创建一个缓冲区变量,该变量具有真正的 InputField 值。

        因此,如果您接受非退格代码,则缓冲区的新值将是 InputField 值并使用您的 hotKeyFunction,否则 InputField 的新值将是缓冲区值并且您将获得 InputField 的正常工作。

        【讨论】:

          【解决方案6】:
          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);
              }
          

          【讨论】:

            【解决方案7】:

            在你的 onKeyDown 或 onKeyPress 上试试这个

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-10-23
              • 2010-12-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多