2009-04-04 12 views
12

J'ai rencontré un problème de rendu HTML.comment faire un DIV unfocusable?

Dans le document dir = "rtl" de IE7, lorsque JavaScript tente de définir le focus sur un élément DIV (avec la méthode oElement.focus()), le rendu se transforme en désordre. Le contexte est très compliqué, donc je suppose que la solution la plus simple est de rendre le DIV non focalisable?

Y a-t-il un moyen de ne pas focaliser un DIV?

+0

double possible de [Comment faire un élément HTML non focalisable?] (Http://stackoverflow.com/questions/9152096/how-to-make-an-html-element-non-focusable – thSoft

Répondre

19

Le <div> ne devrait pas être en mesure de recevoir le focus à moins que vous avez ajouté tabIndex.

Si vous avez ajouté tabIndex, vous devez l'enlever par

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

Je sais que c'est super vieux, mais mon expérience a montré que Firefox permettra à un div de se concentrer même s'il n'a pas de tabIndex. (Juste ajouté en tant que FYI pour d'autres googleurs.) – Vaccano

+0

Notez que les divs avec 'contenteditable =" true "' peuvent également recevoir le focus. – 10basetom

6

Je ne suis pas sûr si vous pouvez faire un élément « un focalisable », mais vous pouvez certainement non se concentrer en un point précis dans le temps en utilisant sa méthode blur:

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

EDIT:

Je pense que vous pouvez rendre un élément non focalisable en le défocalisant à chaque fois qu'il est mis au point. Vous pouvez réaliser cela via:

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

... ou (en utilisant en ligne Javascript dans votre HTML):

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

Steve

+0

Pour le rendre flou, cela signifie que le focus est déjà dessus, non? Comment désactiver le focus pour le définir? –

+0

Je ne suis pas sûr s'il est possible de rendre un élément "non focalisable". Désolé de ne pas avoir lu votre question attentivement! –

18

De plus Si vous voulez faire un élément focalisable (éléments d'entrée de forme, etc.) comme unfocussable. Vous pouvez définir:

tabIndex = "-1" 

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

est inférieure à la façon de faire une DIV unfocusable en utilisant 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(); 
Questions connexes