1

YUIのMenuBarウィジェットを使用してMenuBarをセットアップし、ドキュメントYAHOO.util.KeyListenerに添付して、メニューとサブメニュー項目にキーボードですばやくアクセスできるようにしました(たとえば、「s」でセットアップメニューを開きます)。問題は、ユーザーが入力要素にいるときにキーリスナーが引き続き起動することです。たとえば、ユーザーがテキストフィールドにスープを入力している場合、「s」文字を使用すると、セットアップメニューが開きます。

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

4

1 に答える 1

0

キーボード ショートカットを提供しようとしてくれたことは称賛に値しますが、これはクロスプラットフォームを実装するのに少し苦労することに注意してください。可能であれば、タグでアクセス キーを使用することを強くお勧めします。<a>

それでも行くなら、あなたにaccesskeyは合わないと思います。関連する YUI チュートリアルを読んだことがあると思います。

blurfocusが本当に正しい方法である場合、次のようなものを使用します

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);
}
于 2008-10-01T08:45:13.030 に答える