2013-08-15 16 views
8

Wiele elementów DOM można ustawić: divs za pomocą tabIndex, elementów wejściowych itd. Czy istnieje prosty sposób sprawdzenia, czy element można ustawić w trybie focus, niż sprawdzanie miliardów różnych przypadków? Czy istnieje metoda jQuery dla tego?Jak sprawdzić, czy element dom może być aktywowany?

+0

Czy to pomoże? http://stackoverflow.com/a/2684561/1725764 –

+1

@HashemQolami, nie o to prosił. – gustavohenke

+0

I nie powiedziałem, że to !, po prostu zadałem pytanie. –

Odpowiedz

4

Answer "tłumaczone" stąd: Which HTML elements can receive focus?

  • <a> lub <area> z href
  • żadnych elementów formularzy, które nie są wyłączone
  • iframes
  • Każdy element z tabindex

Dodatkowo, I beli Wcześniej, że ukryte elementy również nie mogą się skupić.

Zakładając, że warunki, następująca funkcja może pomóc (zakładając, że będzie to zawsze otrzymują element jQuery):

function canFocus($el) { 
    if ($el.is(":hidden") || $el.is(":disabled")) { 
     return false; 
    } 

    var tabIndex = +$el.attr("tabindex"); 
    tabIndex = isNaN(tabIndex) ? -1 : tabIndex; 
    return $el.is(":input, a[href], area[href], iframe") || tabIndex > -1; 
} 
+0

Znam listę przedmiotów, które mogą otrzymać fokus. Jednak chcę mieć gotowe i przetestowane rozwiązanie obejmujące wszystkie przypadki, o których być może nie jestem świadomy. –

+0

Sprawdź, czy zaktualizowana odpowiedź pomaga. – gustavohenke

+3

jQuery ma to wbudowane, po prostu użyj '$ el.is (': focusable')' http://api.jqueryui.com/focusable-selector/ – lazd

Powiązane problemy