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;
}
});
target-element が または のいずれかであるinput場合textarea、 を押しmても何も起こりませんが、これらの 2 つの要素のいずれでもないtoggleMenu()場合は、デフォルト状態に入り、が呼び出されます。