【问题标题】:Detect backspace and special characters using javascript使用 javascript 检测退格和特殊字符
【发布时间】:2014-05-02 14:13:37
【问题描述】:

我想检测输入字段上的这两种行为:

1)退格键

2)“@”和“#”键

通过使用 jQuery 的 keypress 函数,我能够检测到特殊字符,但不能检测退格。 链接->How to know if .keyup() is a character key (jQuery)

通过使用 jQuery 的keyup/keydown,我能够检测退格,但不能检测特殊字符。 链接->jQuery: keyPress Backspace won't fire?

如何检测这两种行为?

注意:Keypress 只能在 Firefox 中检测退格。 Chrome 没有检测到这一点。

【问题讨论】:

  • keyup 事件有什么问题?不确定是否理解您的问题。你能提供一个jsFiddle吗?
  • 这样,我无法检测到 chrome 上的退格键。 (检查提供的链接)
  • keypress 不会因为退格而被解雇,keyup 是。我的问题是关于keyup。那么使用keyup有什么问题???在这里自己测试一下:jsfiddle.net/8W7uV 编辑:好的,我现在明白你所说的“特殊键”是什么意思了

标签: javascript jquery key


【解决方案1】:

你可以使用下面的sn-p:

var keys = {};

$('input').keydown(function (e) {
    keys[e.which] = true;
});

$('input').keyup(function (e) {        
    getKeys();
    delete keys[e.which];    
});

function getKeys() {    
   if(keys[8]) {
        alert('bakspace pressed');
    }else if(keys[17] && keys[18] && keys[48]) {
        alert('@ pressed');
    }else if(keys[17] && keys[18] && keys[51]) {
        alert('# pressed');
    }    
}

DEMO

原帖:https://stackoverflow.com/a/4954480/1414562

【讨论】:

  • 如果我想写在 2 个单词之间,这是行不通的。例如:“hey there”已经存在,但我尝试在“hey”和“there”之间输入@sam。有什么想法吗?
  • @user2962766 更新了处理此案例的答案
  • 现在没有检测到@键。
猜你喜欢
  • 1970-01-01
  • 2012-09-02
  • 2012-11-05
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
相关资源
最近更新 更多