326 votes

Comment désactiver tous les contenus div

Je supposais que si je désactivais un div, tout le contenu était également désactivé.

Cependant, le contenu est grisé mais je peux toujours interagir avec lui.

Existe-t-il un moyen de faire cela ? (désactiver un div et faire en sorte que tout le contenu soit également désactivé)

148voto

Martin K. Points 2617

Utilisez un framework comme JQuery pour faire des choses comme :

function toggleStatus() {
    if ($('#toggleElement').is(':checked')) {
        $('#idOfTheDIV :input').attr('disabled', true);
    } else {
        $('#idOfTheDIV :input').removeAttr('disabled');
    }   
}

Désactiver et activer les éléments de saisie dans un bloc Div en utilisant jQuery devrait vous aider !

À partir de jQuery 1.6, vous devez utiliser .prop au lieu de .attr pour la mise hors service.

2 votes

Sélectionner "manuellement" toutes les entrées... Je vais essayer, mais ne devrait-il pas être suffisant de marquer la div comme désactivée ?

0 votes

Lorsque je bascule vers la désactivation, certains boutons de pagination qui doivent rester désactivés sont également basculés...

0 votes

Vous pouvez filtrer ces boutons et faire un ".attr('disabled', true) ;" à chaque fois ! Il suffit de faire un $('#idOfPagination').attr('disabled', true) ; après la construction if{}else{}.

50voto

cletus Points 276888

Je voulais juste mentionner cette méthode d'extension pour activer et désactiver des éléments . Je pense que c'est un moyen beaucoup plus propre que d'ajouter et de supprimer des attributs directement.

Alors vous le faites tout simplement :

$("div *").disable();

0 votes

Cette solution peut provoquer des effets secondaires dans les grandes pages ! (Pas de référence statique à un conteneur div / Chaque élément sous-jacent est adressé)

0 votes

Si vous utilisez asp.net, vous obtiendrez un <div disabled="disabled"> lorsque vous désactivez un contrôle du panneau. Cela fonctionne pour les éléments enfants (c'est-à-dire qu'ils deviennent désactivés) dans IE mais pas dans les autres navigateurs. Vous pouvez désactiver tous les éléments de formulaire enfants dans Chrome/Firefox en combinant la fonction jquery disable avec...$("div[disabled='disabled'] :input").disable() ;

15voto

Chris Van Opstal Points 16961

L'attribut "disabled" ne fait pas partie de la spécification du W3C pour l'utilisation de l'adresse IP. Éléments DIV seulement pour éléments de forme .

L'approche jQuery suggérée par Martin est le seul moyen infaillible d'y parvenir.

14voto

Kokizzu Points 1455

Similaire à la solution de cletu, mais j'ai eu une erreur en utilisant cette solution, c'est la solution de contournement :

$('div *').prop('disabled',true);
// or
$('#the_div_id *').prop('disabled',true);

fonctionne bien pour moi

5voto

Sabinia Points 41

Les contrôles de saisie HTML peuvent être désactivés à l'aide de l'attribut "disabled", comme vous le savez. Une fois que l'attribut "disabled" d'un contrôle d'entrée est défini, les gestionnaires d'événements associés à ce contrôle ne sont pas invoqués.

Vous devez simuler le comportement ci-dessus pour les éléments HTML qui ne supportent pas l'attribut 'disabled' comme div, si vous le souhaitez.

Si vous avez une division et que vous voulez prendre en charge l'événement clic ou clé sur cette division, vous devez faire deux choses : 1) Lorsque vous voulez désactiver la div, définissez son attribut disabled comme d'habitude (pour respecter la convention). 2) Dans les gestionnaires de clic et/ou de touche de votre div, vérifiez si l'attribut disabled est défini sur la div. Si c'est le cas, il suffit de ne pas tenir compte de l'événement de clic ou de touche (par exemple, il suffit de retourner immédiatement). Si l'attribut "disabled" n'est pas défini, faites la logique de l'événement "click" et/ou "key" de votre div.

Les étapes ci-dessus sont également indépendantes du navigateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X