كيف يمكنني تعطيل YAHOO.util.KeyListener عند التركيز على عنصر الإدخال؟

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

سؤال

لدي إعداد MenuBar مع YUI's MenuBar القطعة، ولدي YAHOO.util.KeyListener ارتبط ب وثيقة للوصول السريع بلوحة المفاتيح إلى القوائم وعناصر القائمة الفرعية (على سبيل المثال:'s' لفتح قائمة الإعداد).المشكلة هي أن مستمع المفاتيح سيستمر إطلاقه عندما يكون المستخدم في عنصر الإدخال.على سبيل المثال، قد يكون المستخدم يكتب حساء في حقل نص، وسيؤدي الحرف 's' إلى فتح قائمة الإعداد.

أحد الحلول هو تعطيل مستمع المفاتيح عندما يكون التركيز على عنصر الإدخال، وتمكينه على التمويه.كيف لي أن تذهب عن القيام بذلك؟هل هناك حل أفضل؟

هل كانت مفيدة؟

المحلول

أنا أثني عليك لمحاولتك توفير اختصارات لوحة المفاتيح، ولكن عليك أن تدرك أن هذا سيكون صعبًا بعض الشيء عند تنفيذه عبر الأنظمة الأساسية.إذا كان ذلك ممكنا، أوصي بشدة باستخدام مفاتيح الوصول على <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