Bonjour, je souhaite appliquer un bout de code a toute mes balise sauf a textarea, voila ce que j'ai essayée :
Pourquoi sa ne marche pas ?Code:
1
2 if (document.activeElement.tagName.toLowerCase() != "textarea") { }
Merci d'avance
Version imprimable
Bonjour, je souhaite appliquer un bout de code a toute mes balise sauf a textarea, voila ce que j'ai essayée :
Pourquoi sa ne marche pas ?Code:
1
2 if (document.activeElement.tagName.toLowerCase() != "textarea") { }
Merci d'avance
Bonjour,
Si tu ouvres une console (outil de développement) et que tu entres document.activeElement.tagName.toLowerCase() qu'est-ce que ça te retourne ?
Logiquement, l'élément actif par défaut (body).
Maintenant, dans le document, fait "tabulation" plusieurs fois, et entres de nouveau document.activeElement.tagName.toLowerCase() dans la console. Tu verras que l'élément actif aura changé.
Ici donc tu tests un seul élément, et non tous les éléments de ton document. Ce n'est donc pas la bonne méthode.
Des pistes, utilise des outils du DOM :
- treeWalker
- la famille des getElementXXX
- fonction récursive utilisant firstChild / nextSibling
- etc
Il y a plein de façons de faire différentes, n'hésite pas à nous montrer comment tu t'en sors
Existe t'il une autre solution plus simple dans ce cas ?, je ne voit pas en quoi tes liens peuvent m'aidée, merci quand même de ton aide.
Ben pour qu'on puisse t'aider, il faut nous aider à t'aider. :mrgreen:
Là, tu te contentes d'écrire un if susceptible d'être fonctionnel de surcroit sans qu'on sache dans quel contexte il est utilisé.
Tel quel, on peut rien te dire. C'est à toi de nous donner suffisamment d'informations pour qu'on puisse savoir ce que tu veux faire, ce que tu as essayé de faire et pourquoi ça ne fonctionne pas.
Il s'agit de "désactiver" le clique droit (j' ai créer un menu perso en css) dans le cadre d'une application de glisser-déposer.
Le problème c'est pour que ca marche faut désactiver le clique droit en js.
Mais ce code s'applique aux balises textarea (ce qui est gênant car elle n'on pas de menu perso en css, car elle n'en pas besoin...).Code:
1
2
3
4
5
6
7 function disableselect(e){ return false } function reEnable(){ return true } document.oncontextmenu=new Function ("return false")
Voilà une solution :
Cela dit, ce n'est pas parce que c'est possible qu'il faut le faire. Désactiver le menu contextuel est en général déconseillé, car cela restreint les fonctionnalités du navigateur, et les utilisateurs peuvent être agacés et ne pas avoir envie de revenir sur ton site. Il faut que tu aies vraiment une bonne raison de le faire.Code:
1
2
3
4
5 document.oncontextmenu = function(event) { if ('TEXTAREA' !== event.target.tagName) { event.preventDefault(); } }
Super merci, l'application est du style Google drive (quand vous faite un clique droit sur 1 fichiers), c'est pour désactiver le clique droit sur les bordures pour pas gêner l'utilisation.
Pour ceux que sa intéresse j'ai aussi désactivée la touche backspace (sauf dans les balises textarea) pour éviter de faire précédent par accident et perdre tout ce que l'on a écrit...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $(document).keydown(function(e) { var doPrevent; if (e.keyCode == 8) { var d = e.srcElement || e.target; if (d.tagName.toUpperCase() == 'INPUT' || d.tagName.toUpperCase() == 'TEXTAREA') { doPrevent = d.readOnly || d.disabled; } else doPrevent = true; } else doPrevent = false; if (doPrevent) e.preventDefault(); });
J'ai encore une question : pourquoi sa ne marche pas si je met Id au lieu de Name ?
Code:
1
2
3
4
5 document.oncontextmenu = function(event) { if ('monId' !== event.target.tagId) { event.preventDefault(); } }
Je pense que tu cherches à utiliser id. Il y a trois propriétés différentes :
- element.tagName correspond au nom de la balise
- element.name correspond à l'attribut name quand il y en a un
- element.id correspond à l'attribut id quand il y en a un
Oui, pourquoi sa ne marche ?
Merci pour votre aide.Code:
1
2
3
4 document.oncontextmenu = function(event) { if (('TEXTAREA' !== event.target.tagName) || ('monid' !== event.target.id)) { event.preventDefault(); }