2012-10-31 14 views
6

मैं कुछ इनपुट नियंत्रणों के साथ एक मोडल विंडो दिखाता हूं। जब मैं "टैब" कुंजी दबाता हूं तो यह नियंत्रण के माध्यम से नेविगेट करता है।एक्स्टोज़ मोडल विंडोज़ बैक कंट्रोल पर ध्यान केंद्रित करते हैं

यदि मैं "टैब" दबाता रहता हूं, तो कुछ पल में यह इस विंडो के पीछे नियंत्रण को केंद्रित करता है, और मैं इस नियंत्रण में भी टाइप कर सकता हूं।

मैं ExtJs 4.1

धन्यवाद उपयोग कर रहा हूँ।

+0

यह बग अभी भी ExtJS संस्करण 5.0.1.1255 पर मौजूद है। कोई सुझाव? – dataol

उत्तर

4

कुछ कामकाज किया, मेरे लिए काम कर रहा है, इसे जांचें और कृपया मुझे बताएं। यदि फोकस खिड़की घटक तो यह पहले एक करने के लिए आवंटित किया जाएगा फिर से पिछले तत्व से बाहर जा रहा है

/* ***For activation of Tab Key only to the active panel****/ 


Ext.EventManager.on(Ext.getBody(), 'keydown', focusListenerLogin, Ext.getBody()); 
Ext.EventManager.on(Ext.getBody(), 'keyup', focusListenerLogin, Ext.getBody()); 
Ext.EventManager.on(Ext.getBody(), 'keypress', focusListenerLogin, Ext.getBody()); 
Ext.EventManager.on(Ext.getBody(), 'focusin', focusListenerLogin, Ext.getBody()); 


/***Here the Function is defined.***/ 

function focusListenerLogin(e) { 

if(typeof Ext.WindowManager.getActive() !== 'undefined' && Ext.WindowManager.getActive() !== null) { 
    var activeWinId = Ext.WindowManager.getActive().getId(); 
    var obj = Ext.getCmp(activeWinId); 
    var id = typeof obj.focusEl !=='undefined' ? obj.focusEl.id : obj.id; 
    window.prevFocus; 


    var dom = activeWinId; 
    var components = []; 
    Ext.Array.each(Ext.get(dom).query('*'), function(dom) { 
     var cmp = Ext.getCmp(dom.id); 
     if(cmp && cmp.isVisible()) { 
     if (cmp && cmp.btnEl && cmp.btnEl.focusable()) 
     components.push(cmp.btnEl); 
     else if(cmp && cmp.inputEl && cmp.inputEl.focusable()) 
     components.push(cmp.inputEl); 
     } 
    }); 


    if (typeof obj != 'undefined' && obj.isVisible() && obj.el.id === activeWinId && (typeof e.keyCode!== 'undefined' ? e.keyCode === 9 : true)) { 
     var focused = document.activeElement; 

    if (!focused || focused === document.body){ focused = null;} 
     else if (document.querySelector) focused = document.querySelector(":focus"); 

    if(typeof window.prevFocus !=='undefined' && window.prevFocus !== null && focused !== window.prevFocus && components.length>0 && window.prevFocus.id === components[components.length-1].id) { 

     Ext.getCmp(id).focus(); 
     window.prevFocus = document.activeElement; 
     } 
    else if(components.length==0) { 

     Ext.getCmp(id).focus(); 
     window.prevFocus = document.activeElement; 
    } 
    else 
    window.prevFocus = focused !== null ? focused : window.prevFocus; 
    } 
    return false; 
} 



} 

तर्क

  1. है।

  2. यदि विंडो में कोई फोकस सक्षम तत्व नहीं है तो फोकस केवल विंडो पर ही रहेगा।

कृपया मुझे बताएं कि कोड के इस टुकड़े आप मदद करता है।

संबंधित मुद्दे