入力要素にフォーカスがあるときにYAHOO.util.KeyListenerを無効にするにはどうすればよいですか?
-
03-07-2019 - |
質問
YUIのMenuBar ウィジェットでMenuBarをセットアップし、 YAHOO.util.KeyListener
を document に添付して、メニューおよびサブメニュー項目(セットアップメニューを開くための 's'など)にすばやくキーボードでアクセスできるようにします。問題は、ユーザーが入力要素にいるときに keylistener が起動することです。たとえば、ユーザーがテキストフィールドに soup と入力すると、「s」文字が原因でセットアップメニューがポップアップ表示されます。
1つの解決策は、入力要素にフォーカスがあるときに keylistener を無効にし、ぼかし時に有効にすることです。これをどうやってやるの?より良い解決策はありますか?
解決
キーボードショートカットを提供しようとしていることを称賛しますが、これはクロスプラットフォームを実装するのが少し苦痛になることに注意してください。可能であれば、アクセスキーを使用することを強くお勧めしますa> < a>
タグ。
まだ実行中の場合、 accesskey
は機能しません。 関連するYUIチュートリアルを読んだと仮定します。
blur
と focus
が本当に正しい方法である場合、次のようなものを使用します
YAHOO.util.Event.onDOMReady(init);
function init() {
// set up the keyboard listeners
setUpExceptionsToKeyboardShortcuts();
}
function disableShortcuts() {
// Do what you've got to do
}
function enableShortcuts() {
// Do what you've got to do
}
function setUpExceptionsToKeyboardShortcuts() {
var focusable = document.getElementsByTagName('input');
focusable = focusable.concat(document.getElementsByTagName('select'));
focusable = focusable.concat(document.getElementsByTagName('textarea'));
YAHOO.util.Event.addListener(focusable, 'focus', disableShortcuts);
YAHOO.util.Event.addListener(focusable, 'blur', ensableShortcuts);
}
所属していません StackOverflow