入力要素にフォーカスがあるときにYAHOO.util.KeyListenerを無効にするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/155445

質問

YUIのMenuBar ウィジェットでMenuBarをセットアップし、 YAHOO.util.KeyListener document に添付して、メニューおよびサブメニュー項目(セットアップメニューを開くための 's'など)にすばやくキーボードでアクセスできるようにします。問題は、ユーザーが入力要素にいるときに keylistener が起動することです。たとえば、ユーザーがテキストフィールドに soup と入力すると、「s」文字が原因でセットアップメニューがポップアップ表示されます。

1つの解決策は、入力要素にフォーカスがあるときに keylistener を無効にし、ぼかし時に有効にすることです。これをどうやってやるの?より良い解決策はありますか?

役に立ちましたか?

解決

キーボードショートカットを提供しようとしていることを称賛しますが、これはクロスプラットフォームを実装するのが少し苦痛になることに注意してください。可能であれば、アクセスキー < 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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top