【问题标题】:How do I disable backspace when input checkboxes are focused on in jQuery?当输入复选框集中在 jQuery 中时,如何禁用退格键?
【发布时间】:2010-04-14 16:07:36
【问题描述】:

当输入 checkboxes 在 jQuery 中被关注时,如何禁用退格按钮?当 checkboxes 被关注并且我按下退格键 (keycode=8) 时,浏览器认为我正在尝试返回页面并使用退格键作为 history.go(-1) 命令。

$("div#types input").focus(function(){
  window.onkeydown = function(e){
    return !(e.keyCode == 8);
};

【问题讨论】:

  • 您为什么要尝试破坏典型的浏览器 UI 模式?我强烈反对这是必要的,除非您正在构建一个非常专业的 Web 应用程序,其中键盘快捷键很常见。
  • 这正是我正在做的。这不是一个面向公众的网页。此应用程序只能在 2 台计算机上使用,并且需要此功能。

标签: jquery input checkbox backspace


【解决方案1】:

这将阻止退格按钮在任何时候向后导航:

$(document).keydown(function(e) {
  if (e.keyCode === 8)
  {
     return false;
  }
});

现在要弄清楚如何仅在选中复选框时运行它...

编辑:

判断一个复选框是否有焦点的问题在于,只有当它被标签或实际在代码中设置时才会获得焦点。如果单击它,它会被选中,但它实际上并没有聚焦(至少在 chrome/safari 中)。这一切都取决于您如何设置焦点。

编辑 2:

要使您的复选框在单击时具有焦点,只需添加以下内容:

$('input[type=checkbox]').click(function() {
   $(this).focus();
});

...所以把它们放在一起,这将使复选框专注于单击并在复选框具有焦点时停止退格按钮(当然都在 $(document).ready 函数中):

$(document).keydown(function(e) {
    if (e.keyCode === 8 && $('input[type=checkbox]:focus').size() > 0)
    {
       return false;
    }
});

$('input[type=checkbox]').click(function() {
    $(this).focus();
});

【讨论】:

  • 对如何解决这个问题有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多