【问题标题】:How do I prevent only specific default actions of key press on a page?如何仅防止页面上按键的特定默认操作?
【发布时间】:2015-12-18 19:27:34
【问题描述】:

我只想阻止网页上的某些按键操作。特别是退格。通常,我会这样做:

function keyPress(ev) {
    if(ev.keyCode === 8) {  
        ev.preventDefault();
    }
    // do cool stuff here
}

$(document).keydown(keyPress);

该代码阻止了退格键所做的所有默认操作。我想阻止它导航到最后一页,但我想允许它删除文本字段中的字符。如何只防止导航而不防止文本操作?

【问题讨论】:

  • 真正的问题是,为什么退格会导航到另一个文本字段?

标签: javascript events input keyboard


【解决方案1】:

对于您提到的特定情况,您可以只检查用户是否有焦点文本字段,如果是,则不阻止默认值。

function keyPress(ev) {
   var targetElTag = document.activeElement.tagName;
   if (ev.keyCode === 8 && targetElTag !== 'TEXTAREA') {
      ev.preventDefault();
   }
}

您还需要包含您希望退格起作用的任何其他可聚焦元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 2011-06-29
    • 2011-08-23
    • 2012-12-26
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多