我正在使用键盘快捷键构建一些东西,例如您按Ctrl + m打开菜单。我为此使用jQuery和jwerty插件,这看起来像下面的代码:
jwerty.key('m', function () {
toggleMenu();
});
轻按“m”键将触发toggleMenu功能。
现在,我想知道如何防止用户在输入字段或文本区域中键入内容时触发此功能。
最佳答案
我从未使用过jwerty,但我建议:
jwerty.key('m', function (e) {
if (e.target.tagName.toLowerCase() !== 'input') {
toggleMenu();
}
});
这将测试事件的目标,如果不是
input
,则调用toggleMenu()
函数。如果它是input
,则不执行任何操作(尽管您可以根据需要显式使用return false
)。为了解决
textarea
的问题,正如我确实应该做的那样,可以扩展上述内容(在if
评估中添加另一个子句,或者可以采用以下基于switch
的方法:jwerty.key('m', function (e) {
switch (e.target.tagName.toLowerCase()) {
case 'input':
case 'textarea':
break;
default:
toggleMenu();
break;
}
});
如果目标元素是
input
或textarea
,则按m
不会执行任何操作,而如果这两个元素都不是,则输入默认状态并调用toggleMenu()
。