2009-12-11 17 views
8

Hızlı soru - bir odaklama bir fare tıklaması veya bir odak olaydan bir sekme gelip gelmediğini tespit etmek mümkün mü?Odağın kaynağını tespit edebilir miyim? (Javascript, jQuery)

Varsa, kaynağı belirlemek için aynı öğede bir tıklama tutamacını kullanmam gerekecek, ancak odak olayından bir yol tercih ediyorum.

Teşekkür

Gausie

+0

+1 bu ilginç bir soru olduğu için. ama neden bu farklılığa ihtiyacın olduğunu göremiyorum. –

+0

Hızlı giriş için bir veri giriş formu yapıyorum. Kullanıcı kutuya girerse, ekranın içinde dikey olarak merkezlenecek şekilde kaydırmak istiyorum. Fakat eğer tıklarlarsa, etki çok kafa karıştırıcı olur ve ben bunun gerçekleşmesini istemiyorum. – Gausie

cevap

4

% 100 çalışmaz Mayıs ama sonra doğrudan bir yoludur yoksa sadece Mouseover kullanmak ve bunu tespit edemez? Kişi, (?)

+2

Ayrıca kontrol için sekme yapabilirsiniz ... – Mickel

+1

Veri bir kontrol girildiğinde ve veri girmeden önce fare bitti değilse, "tab" kullanarak olabilir doğru evet :) – Shoban

+0

THanks - Bu oldu iyi bir fikir. İşte \t \t \t \t $ kullanılan kod ('giriş'). Mouseover (function() { \t \t \t \t \t $ (this) bulunuyor.attr ('klik', 'true'); \t \t \t \t}); \t \t \t \t $ ('input') mouseout (function() { \t \t \t \t \t $ (this) .removeAttr ('tıklayın'); \t \t \t \t}). \t \t \t \t $ ('giriş') (function() { \t \t \t \t \t $ bu = $ (this) odak;. \t \t \t \t \t $ this.parents ('tr') css ('arka plan rengi', 'sarı'); \t \t \t \t \t eğer { \t \t \t \t \t \t alert (1) ($ this.attr ('klik') = 'true'!); \t \t \t \t \t $ ('body') scrollTop ($ this.offset(). Top - ($ (window) .height()/2)); \t \t \t \t \t} \t \t \t \t}); \t \t \t \t $ ('giriş') bulanıklık (fonksiyonu() { \t \t \t \t \t $ (bu) .parents ('tr') CSS (background-renk " '), saydam';.. \t \t \t \t}); – Gausie

0

Seçmek için kontrolün üzerinde fareyi getirecektir Odaklama olayının siparişin yolunu almasını engellemediğinden eminim (window.focus, tuş, tıklama ...).

Ancak bir tıklama durumunda, fare tıklatmasını algılayabilirsiniz. Ayrıca klavye olayını da tespit edebilirsiniz (daha fazla http://www.quirksmode.org/js/keys.html).

0

Fare konumu nasıl kullanılır?

Olay işleyicisinde, geçerli fare konumunu, kontrolünüzün alanıyla karşılaştırın. Koordinatlar kontrol alanının içine düşerse, kaydırma yapmayın.

Bu, öğenin üzerine gelebileceğinden ve tıklatmadan sekme yapılabildiğinden, elbette mükemmel bir çözüm değildir. Fakat herhangi bir yönelimsizliği azaltmaya çalıştığınız için, bu aslında iyi bir yan etki olabilir.

Fare konumuyla çalışırken, komut dosyasını quirksmode.org'dan kullanmayı seviyorum. Bence Jquery bunun için bazı işlevler sağlayabilir.

0

AnahtarKodu almayı deneyin - işte nasıl ayrıntılı bir ayrıntıya giden bir makalenin bağlantısı. Alttaki yorumlar da yararlı olabilir.

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

İşte makaleden kod. Bunu göstermez, ancak kimse ilgi varsa sekme için keyCode 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

burada, ben de öyle yapmıştım:

$('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'); 
}); 
İlgili konular