J'étais sous l'hypothèse que si je désactivais une div, tout le contenu était également désactivé.
Cependant, le contenu est grisé mais je peux toujours interagir avec lui.
Y-a-t-il un moyen de faire ça? (désactivez une div et désactivez également tout le contenu)
javascript
jquery
html
juan
la source
la source
Utilisez un framework comme JQuery pour faire des choses comme:
Désactiver et activer les éléments d'entrée dans un bloc Div à l'aide de jQuery devrait vous aider!
Depuis jQuery 1.6, vous devez utiliser
.prop
au lieu de.attr
pour désactiver.la source
Je voulais juste mentionner cette méthode d'extension pour activer et désactiver des éléments . Je pense que c'est une manière beaucoup plus propre que d'ajouter et de supprimer directement des attributs.
Ensuite, vous faites simplement:
la source
Voici un commentaire rapide pour les personnes qui n'ont pas besoin d'un div mais simplement d'un blockelement. En HTML5 a
<fieldset disabled="disabled"></fieldset>
obtenu l'attribut désactivé. Chaque élément de formulaire dans un jeu de champs désactivé est désactivé.la source
L'attribut désactivé ne fait pas partie de la spécification W3C pour les éléments DIV , uniquement pour les éléments de formulaire .
L'approche jQuery suggérée par Martin est la seule façon infaillible que vous allez accomplir cela.
la source
similaire à la solution de cletu, mais j'ai eu une erreur en utilisant cette solution, voici la solution:
fonctionne bien sur moi
la source
Vous pouvez utiliser cette simple instruction CSS pour désactiver les événements
la source
Navigateurs testés: IE 9, Chrome, Firefox et jquery-1.7.1.min.js
la source
Une façon d'y parvenir consiste à ajouter l'hélice handicapée à tous les enfants de la div. Vous pouvez y parvenir très facilement:
$("#myDiv")
trouve le div,.find("*")
obtient tous les nœuds enfants à tous les niveaux et.prop('disabled', true)
désactive chacun d'eux.De cette façon, tout le contenu est désactivé et vous ne pouvez pas cliquer dessus, y tabuler, les faire défiler, etc. De plus, vous n'avez pas besoin d'ajouter de classes CSS.
la source
Les contrôles d'entrée HTML peuvent être désactivés en utilisant l'attribut «désactivé» comme vous le savez. Une fois l'attribut «désactivé» pour un contrôle d'entrée défini, les gestionnaires d'événements associés à ce contrôle ne sont pas appelés.
Vous devez simuler le comportement ci-dessus pour les éléments HTML qui ne prennent pas en charge l'attribut «désactivé» comme div, si vous le souhaitez.
Si vous avez un div et que vous souhaitez prendre en charge le clic ou un événement clé sur ce div, vous devez faire deux choses: 1) Lorsque vous souhaitez désactiver le div, définissez son attribut désactivé comme d'habitude (juste pour se conformer à la convention) 2) Dans les gestionnaires de clics et / ou de clés de votre div, vérifiez si l'attribut désactivé est défini sur le div. Si tel est le cas, ignorez simplement l'événement de clic ou de clé (par exemple, revenez immédiatement). Si l'attribut désactivé n'est pas défini, effectuez la logique d'événement de clic et / ou de clé de votre div.
Les étapes ci-dessus sont également indépendantes du navigateur.
la source
Enveloppez le
div
dans unefieldset
balise:la source
Je pensais que j'allais ajouter quelques notes.
la source
C'est pour les chercheurs,
Le mieux que j'ai fait,
la source
Comme mentionné dans les commentaires, vous pouvez toujours accéder à l'élément en naviguant entre les éléments à l'aide de la touche de tabulation. donc je recommande ceci:
la source
Si vous souhaitez conserver la sémantique de désactivé comme suit
vous pouvez ajouter le CSS suivant
l'avantage ici est que vous ne travaillez pas avec des classes sur le div avec lequel vous voulez travailler
la source
J'utiliserais une version améliorée de la fonction de Cletus:
Qui stocke la propriété «désactivée» d'origine de l'élément.
la source
Comment désactiver le contenu d'un DIV
La
pointer-events
propriété CSS seule ne désactive pas le défilement des éléments enfants, et elle n'est pas prise en charge par IE10 et sous pour les éléments DIV (uniquement pour SVG). http://caniuse.com/#feat=pointer-eventsPour désactiver le contenu d'un DIV sur tous les navigateurs.
Javascript:
Css:
Pour désactiver le contenu d'un DIV sur tous les navigateurs, sauf IE10 et versions antérieures.
Javascript:
Css:
la source
Vous trouverez ci-dessous une solution plus complète pour masquer les divisions permettant
Le sablier On et le sablier Off peuvent également être utilisés séparément.
Avec cela, vous pouvez faire par exemple:
voir jsfiddle
la source
la source
Ou utilisez simplement css et une classe "désactivée".
Remarque: n'utilisez pas l'attribut désactivé.
Pas besoin de jouer avec jQuery on / off.
Ceci est beaucoup plus facile et fonctionne sur plusieurs navigateurs:
Vous pouvez ensuite l'éteindre et l'éteindre lors de l'initialisation de votre page ou du basculement d'un bouton
la source
Une autre façon, dans jQuery, serait d'obtenir la hauteur intérieure, la largeur intérieure et le positionnement du DIV contenant, et simplement de superposer un autre DIV, transparent, par-dessus la même taille. Cela fonctionnera sur tous les éléments à l'intérieur de ce conteneur, au lieu des seules entrées.
N'oubliez pas cependant, avec JS désactivé, vous pourrez toujours utiliser les entrées / contenus DIVs. Il en va de même pour les réponses ci-dessus également.
la source
la source
Cette solution css uniquement / noscript ajoute une superposition au-dessus d'un champ (ou un div ou tout autre élément), empêchant l'interaction:
Si vous voulez une superposition invisible, c'est-à-dire transparente, définissez l'arrière-plan, par exemple, rgba (128,128,128,0), car cela ne fonctionnera pas sans arrière-plan. Ce qui précède fonctionne pour IE9 +. Le CSS beaucoup plus simple suivant fonctionnera sur IE11 +
Chrome
la source
Si vous essayez simplement d'empêcher les gens de cliquer et que la sécurité ne vous inquiète pas horriblement - j'ai trouvé un div placé absolu avec un index z de 99999 qui le trie bien. Vous ne pouvez pas cliquer sur le contenu ou y accéder car le div est placé dessus. Peut être un peu plus simple et est une solution CSS uniquement jusqu'à ce que vous deviez la supprimer.
la source
Il existe des bibliothèques javascript configurables qui acceptent une chaîne html ou un élément dom et suppriment les balises et les attributs indésirables. Ceux-ci sont connus comme des désinfectants html . Par exemple:
Par exemple, dans DOMPurify
la source
EDIT: Ci-dessous, j'ai utilisé la
.on()
méthode, utilisez plutôt la.bind()
méthodepour supprimer votre paramètre, vous pouvez utiliser la
.unbind()
méthode. Alors que la.off()
méthode ne fonctionne pas comme prévu.Après avoir recherché des centaines de solutions! apprendre sur les événements de pointeur, voici ce que j'ai fait.
Comme @Kokodoko l'a mentionné dans sa solution qui convient à tous les navigateurs sauf IE.
pointer-events
fonctionne dans IE11 et non dans les versions inférieures. J'ai également remarqué dans IE11 , les événements de pointeur ne fonctionnent pas sur les éléments enfants. Et donc si nous avons quelque chose comme ci-dessousoù span -est l'élément enfant , le réglage
pointer-events: none
ne fonctionnera pasPour surmonter ce problème, j'ai écrit une fonction qui pourrait agir comme des événements de pointeur pour IE et fonctionnera dans les versions inférieures.
Dans le fichier JS
Dans un fichier CSS
En HTML
Cela a simulé le
pointer-events
scénario où nepointer-events
fonctionne pas et lorsque la condition ci-dessus des éléments enfants se produit.JS Fiddle pour le même
la source
regarde mon sélecteur
l'
fieldsetUserInfo
is div contient toutes les entrées que je souhaite désactiver ou activerj'espère que cela vous aide
la source