IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Désactiver vos champs de formulaires HTML5 par groupes

Le , par Bovino

54PARTAGES

5  0 


Comme vous le savez certainement, pour désactiver qu'un champ de formulaire soit inactif, vous devez lui attribuer un attribut disabled.
Notez qu'il s'agit d'un attribut de type booléen. Ces attributs booléens ont la particularité que leur seule présence suffit à activer la fonctionnalité.

Si vous optez pour une syntaxe XHTML (c'est-à-dire conforme aux règles XML), vous devez lui attribuer une valeur (la seule autorisée pour que le document soit valide est "disabled", mais n'importe qu'elle autre valeur aura le même effet si ce n'est que le document ne sera plus valide) :
Code : Sélectionner tout
<input name="total" disabled="disabled" />
Code : Sélectionner tout
<input name="total" disabled="foo" /><!-- aura le même effet -->
Si au contraire vous optez pour une syntaxe HTML, alors seul l'attribut est nécessaire :
Code : Sélectionner tout
<input name="total" disabled>
Le problème que vous pouvez rencontrer, c'est dans le cas où vous ayez plusieurs champs à désactiver de la sorte. Bien entendu, multiplier les attributs disabled est faisable, mais un peu lourd.
Heureusement, HTML5 arrive à votre secours.
En effet, il est désormais possible d'affecter l'attribut à une balise <fieldset>. Cette balise a pour but de regrouper des champs ayant une finalité commune.
Ainsi, en affectant l'attribut disabled à cette balise, tous les champs enfants seront désactivés sans avoir besoin de le préciser pour chacun d'eux :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
<fieldset id="groupe" disabled="disabled"> 
    <input name="foo" /> 
    <input type="checkbox" name="bar" /> 
    <select name="toto"> 
        <option value="1">Valeur 1</option> 
        <option value="2">Valeur 2</option> 
        <option value="3">Valeur 3</option> 
        <option value="4">Valeur 4</option> 
    </select> 
</fieldset>
Enfin, vous aurez peut-être besoin d'activer ou de désactiver ces champs en fonction des actions de l'utilisateur. Vous pourrez le faire uniquement en JavaScript puisque ni HTML ni CSS ne prévoient d'interaction permettant d'influer sur cet attribut.
De la même manière, la propriété JavaScript disabled d'un objet de type HTMLElement correspondant à cet attribut est de type booléenne.
Notez que cette propriété prend comme valeur true ou false mais que le transtypage dynamique de JavaScript permet un comportement similaire à celui de HTML : si vous affectez à cette propriété n'importe qu'elle valeur non équivalente à false (par exemple la chaine 'disabled'), l'élément sera désactivé, sinon, il sera activé.
Dans notre exemple précédent, il est donc possible de créer un bouton permettant d'activer ou non un groupe de champs de formulaire :
Code : Sélectionner tout
<button id="switchActif">Activer / désactiver le groupe</button>
Code javascript : Sélectionner tout
1
2
3
4
document.getElementById('switchActif').onclick = function(){ 
    var $groupe = document.getElementById('groupe'); 
    $groupe.disabled = !$groupe.disabled; 
};

Voir un exemple en ligne.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de friendofweb
Membre actif https://www.developpez.com
Le 21/01/2017 à 19:18
Bonjour Bovino,

Pour info, je suis débutant et c'est en voulant appliquer le code suivant :

Code css : Sélectionner tout
1
2
3
4
  
[disabled] { 
cursor: not-allowed; 
}

que j'ai par la suite fait une recherche d'exemples sur "disabled" et suis enfin tombé sur ton article (Google).

Merci !
0  0