2009-04-04 20 views
12

Napotkałem problem z renderowaniem HTML.jak sprawić, by DIV się nie rozpraszało?

W dokumencie dir = "rtl" w IE7, gdy JavaScript próbuje ustawić ostrość na element DIV (za pomocą metody oElement.focus()), renderowanie zmienia się w bałagan. Kontekst jest bardzo skomplikowany, więc przypuszczam, że najłatwiejszą rzeczą jest uczynienie DIV nierozłącznym?

Czy istnieje sposób, aby nie koncentrować DIV?

+0

możliwe duplikat [Jak zrobić element HTML nie aktywowana?] (Http://stackoverflow.com/questions/9152096/how-to-make-an-html-element-non-focusable) – thSoft

Odpowiedz

19

<div> nie powinny być zdolne do odbierania ostrość chyba że masz dodano tabIndex.

Jeśli dodałeś tabIndex, należy usunąć go przez

document.getElementById("yourElement").removeAttribute("tabIndex"); 
+1

Wiem, że to jest bardzo stare, ale moje doświadczenie pokazało, że Firefox pozwoli divowi uzyskać skupienie, nawet jeśli nie ma on tabIndex. (Dodano tylko jako FYI dla innych użytkowników google). – Vaccano

+0

Pamiętaj, że divy z 'contenteditable =" true "' również mogą otrzymać fokus. – 10basetom

6

Nie jestem pewien, czy można dokonać element „un-aktywowana”, ale z pewnością można un-skupić go w określonym momencie używając jego blur metody:

document.getElementById("myElement").blur(); 

EDIT:

Myślę, że możesz sprawić, że element będzie "nieostry", poprzez rozogniskowanie go za każdym razem, gdy jest skupiony. Można to osiągnąć poprzez:

document.getElementById("myElement").onfocus = function() { 
    this.blur(); 
}; 

... lub (przy użyciu inline JavaScript w HTML):

<div onfocus="this.blur();"></div> 

Steve

+0

Aby go zamazać, oznacza to, że fokus jest już na nim, prawda? Jak wyłączyć ustawienie ostrości? –

+0

Nie jestem pewien, czy możliwe jest uczynienie elementu "un-focusable". Przepraszam, że nie przeczytałem dokładnie tego pytania! –

18

Dodatkowo, Jeśli chcesz, aby element focussable (elementy wejściowe postać itd) jako unfocussable. Można ustawić:

tabIndex = "-1" 

document.getElementById("yourElement").setAttribute("tabIndex", "-1"); 
0

Poniżej jest jakiś sposób, aby DIV unfocusable użyciu jQuery.

// Set the tabindex atribute to -1. 
     1)$("divid").attr('tabindex','-1'); 
    // Remove the tabindex atribute if exists. 
     2) $("divid").removeAttr('tabindex'); 
    // This is third way. 
     3) $("divid").blur(); 
Powiązane problemy