2009-12-11 7 views
8

त्वरित प्रश्न - क्या यह पता लगाना संभव है कि माउस क्लिक से फोकस आया है या फोकस ईवेंट से एक टैब?क्या मैं फोकस के स्रोत का पता लगा सकता हूं? (जावास्क्रिप्ट, jQuery)

मुझे लगता है कि यदि नहीं है, तो मुझे स्रोत निर्धारित करने के लिए एक ही तत्व पर क्लिक हैंडल का उपयोग करना होगा, लेकिन मैं फोकस ईवेंट से एक तरीका पसंद करूंगा।

धन्यवाद

Gausie

+0

+1 क्योंकि यह एक दिलचस्प सवाल है। लेकिन मैं यह देखने में असफल रहा कि आपको उस भेद की आवश्यकता क्यों है। –

+0

मैं तेजी से प्रवेश के लिए डेटा एंट्री फॉर्म बना रहा हूं। यदि उपयोगकर्ता बॉक्स में टैब करता है, तो मैं स्क्रॉल करना चाहता हूं ताकि तत्व लंबवत स्क्रीन पर केंद्रित हो। लेकिन अगर वे क्लिक करते हैं, तो प्रभाव बहुत विचलित हो जाता है, और मैं नहीं चाहता हूं कि यह हो। – Gausie

उत्तर

4

100% काम न करे लेकिन अगर वहाँ एक सीधा रास्ता नहीं है तो आप बस Mouseover उपयोग नहीं कर सकते हैं और यह पता लगाने? व्यक्ति इसे चुनने के लिए माउस को नियंत्रण में लाएगा (?)

+2

आप नियंत्रण में भी टैब कर सकते हैं ... – Mickel

+1

हाँ सही है यदि डेटा नियंत्रण में दर्ज किया गया है और यदि डेटा दर्ज करने से पहले माउस ओवर नहीं हुआ है तो यह "टैब" का उपयोग कर सकता है :) – Shoban

+0

धन्यवाद - यह था एक अच्छा विचार। यहाँ कोड मैं इस्तेमाल किया \t \t \t \t $ ('इनपुट')। माउसओवर (function() { \t \t \t \t \t $ (इस) है।attr ('पर क्लिक करें', 'सच'); \t \t \t \t}); \t \t \t \t $ ('इनपुट') mouseout (function() { \t \t \t \t \t $ (इस) .removeAttr ('पर क्लिक करें'); \t \t \t \t})। \t \t \t \t $ ('इनपुट') (function() { \t \t \t \t \t $ इस = $ (this) ध्यान केंद्रित;। \t \t \t \t \t $ this.parents ('tr')। Css ('background-color', 'yellow'); \t \t \t \t \t यदि { \t \t \t \t \t \t चेतावनी (1) ($ this.attr ('क्लिक') = 'सही'!); \t \t \t \t \t \t $ ('body')। ScrollTop ($ this.offset() शीर्ष - ($ (विंडो) .height()/2)); \t \t \t \t \t} \t \t \t \t}); \t \t \t \t $ ('इनपुट') को धुंधला (function() { \t \t \t \t \t $ (इस) .parents ('tr') सीएसएस ('पृष्ठभूमि रंग', 'पारदर्शी');।। \t \t \t \t}); – Gausie

0

मुझे पूरा भरोसा है कि फोकस ईवेंट फोकस का आदेश देने के तरीके को ट्रैक नहीं करता है (window.focus, key, क्लिक करें ...)।

लेकिन एक क्लिक के मामले में, आप माउस क्लिक का पता लगा सकते हैं। आप कीबोर्ड ईवेंट का पता लगा सकते हैं (उस http://www.quirksmode.org/js/keys.html पर अधिक)।

0

माउस स्थिति का उपयोग करने के बारे में क्या?

ईवेंट हैंडलर में, अपने नियंत्रण के क्षेत्र के साथ वर्तमान माउस स्थिति की तुलना करें। यदि निर्देशांक नियंत्रण के क्षेत्र में पड़ते हैं तो स्क्रॉल न करें।

यह पाठ्यक्रम का एक सही समाधान नहीं है, क्योंकि वे तत्व को होवर कर सकते हैं, और तब टैब पर क्लिक किए बिना इसे टैब कर सकते हैं। लेकिन चूंकि आप किसी भी विचलन को कम करने का प्रयास कर रहे हैं, यह वास्तव में अच्छा साइड इफेक्ट हो सकता है।

माउस स्थिति के साथ काम करते समय, मुझे quirksmode.org से स्क्रिप्ट का उपयोग करना पसंद है। मुझे लगता है कि Jquery इसके लिए कुछ कार्यक्षमता भी प्रदान कर सकता है।

0

कुंजीकोड प्राप्त करने का प्रयास करें - यहां एक लेख का एक लिंक है जो इस बारे में विस्तार से बताता है। नीचे की टिप्पणियां भी उपयोगी हो सकती हैं।

http://www.geekpedia.com/tutorial138_Get-key-press-event-using-JavaScript.html

यहाँ लेख से कोड है। यह यह प्रदर्शित नहीं करता है, लेकिन टैब के लिए कीकोड 9.

<script type="text/javascript"> 

document.onkeyup = KeyCheck;  

function KeyCheck(e) 

{ 

    var KeyID = (window.event) ? event.keyCode : e.keyCode; 


    switch(KeyID) 

    { 

     case 16: 

     document.Form1.KeyName.value = "Shift"; 

     break; 

     case 17: 

     document.Form1.KeyName.value = "Ctrl"; 

     break; 

     case 18: 

     document.Form1.KeyName.value = "Alt"; 

     break; 

     case 19: 

     document.Form1.KeyName.value = "Pause"; 

     break; 

     case 37: 

     document.Form1.KeyName.value = "Arrow Left"; 

     break; 

     case 38: 

     document.Form1.KeyName.value = "Arrow Up"; 

     break; 

     case 39: 

     document.Form1.KeyName.value = "Arrow Right"; 

     break; 

     case 40: 

     document.Form1.KeyName.value = "Arrow Down"; 

     break; 
    } 

} 
</script> 
0

है अगर कोई रुचि है, यहाँ है कैसे मैंने किया:

$('input').focus(function(){ 
    $this = $(this); 
    $this.parents('tr').css('background-color','yellow'); 
    if($this.attr('click')!='true'){ 
     $('body').scrollTop($this.offset().top-($(window).height()/2)); 
    } 
}).blur(function(){ 
    $(this).parents('tr').css('background-color','transparent'); 
}).mouseover(function(){ 
    $(this).attr('click','true'); 
}).mouseout(function(){ 
    $(this).removeAttr('click'); 
}); 
संबंधित मुद्दे