2016-04-05 14 views
0

Odaklama kutusunun dışında bir fare bağlantı noktası üzerinden veya sekmeli çıkıldığında FocusEvent tetiklendiyse bazı koşullu dalları olan bir kodum var. Oldukça dağınık JS-Legacy kodu ve sadece burada bir düzeltme uygulamak için zamanım var. FocusEvent içinFocusEvent fare veya sekme aracılığıyla tetiklendiğini nasıl algılayacağını anlama

Doc: Click olayı aksine https://developer.mozilla.org/en/docs/Web/API/FocusEvent

FocusEvent tetikleme olayı sırasında preslenmiş düğmeleri hakkında herhangi bir bilgi bulunmamaktadır.

Bu bilginin nasıl elde edilebileceğine dair bir fikri olan var mı? Google aracılığıyla, yalnızca geçici çözümler buldum - ancak bu FocusEvent'in kutudan çıkardığı düğmeyi almanın bir yolu olduğuna inanamıyorum.

cevap

1

FocusEvent açıkça bağlantılı doc deneysel bir teknoloji olarak tanımlanmaktadır. Yani sizden sorduğunuz şey gelecekte eklenebilir. Ama şimdilik başka bir seçeneğiniz yok gibi görünüyor ama bir geçici çözüm kullanmak.

denemek için bir tane yaptı:

var clickWhileFocused = false; 
 

 
$("#testInput").on("tabbedOut", function() { 
 
    console.log("tabbedOut"); 
 
}); 
 

 
$("#testInput").on("clickedOut", function() { 
 
    console.log("clickedOut"); 
 
}); 
 

 
$(document).on("mousedown", function (e) { 
 
    if($("#testInput").is(":focus") && e.target.id != "testInput") { 
 
    $("#testInput").trigger("clickedOut"); 
 
    clickWhileFocused = true; 
 
    } 
 
}); 
 

 
$("#testInput").on("focusout", function() { 
 
    if(!clickWhileFocused) { 
 
    $("#testInput").trigger("tabbedOut"); 
 
    } 
 
    
 
    clickWhileFocused = false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="text"/> 
 
<input id="testInput" type="text" placeholder="#testInput"/> 
 
<input type="text"/>

+0

Tamam teşekkürler tavsiyen için. BTW Anahtar/düğme olaylarını dünya çapında kaydeden güzel bir kütüphane buldum, böylece kodunuzda herhangi bir anda hangi tuşa basıldığını kontrol edebilirsiniz. https://github.com/ten1seven/what-input – xetra11

+0

Yeh, aslında tab tuşunu kontrol etmek için harika olabilir. Kodumda, sadece her bir "focusout" olayının bir sekme tarafından tetiklendiğini ve varsadığınızı kontrol ediyorum. –

İlgili konular