我使用以下代码尝试,只允许字母,数字,退格键,空格,短划线和&符号。我还想“禁用”所有其他键,包括功能键(F1,F2等)。我正在运行的问题是正则表达式也禁用了转义键。
不使用正则表达式可以实现同样的目的吗?
此功能是实时搜索功能的一部分,如果按下“禁止”键,我不希望发送ajax请求。
searchBox.keyup(function (e) { // LIVE SEARCH FUNCTION
var functionKeysPressed = [112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123].indexOf(e.which) > -1;
if (String.fromCharCode(e.which).match(/^[\w\x08]$/) && !functionKeysPressed) {
// code to execute if key is allowed
}
});
答案 0 :(得分:0)
您可以在没有正则表达式的情况下执行此操作。简单地参考e.keyCode
而不是e.which
:
if (e.keyCode == 27){
//Esc Key pressed
}
onKeyUp
keycode返回触发事件的密钥的Unicode密钥代码。
您可以在此处找到密钥代码: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
要排除多个密钥,您只需创建一个数组并检查密钥代码是否已列入黑名单:
var blacklisted = [1,2,3,4,5];
if (blacklisted.indexOf(e.keyCode) == -1){
//do something
}