200 votes

Comment désactiver un bouton HTML en utilisant JavaScript ?

J'ai lu que l'on peut désactiver (rendre physiquement non cliquable) un bouton HTML en ajoutant simplement la mention disable à sa balise, mais pas comme un attribut, comme suit :

<input type="button" name=myButton value="disable" disabled>

Comme ce paramètre n'est pas un attribut, comment puis-je l'ajouter dynamiquement via JavaScript pour désactiver un bouton qui était précédemment activé ?

290voto

Quentin Points 325526

Comme ce paramètre n'est pas un attribut

C'est un attribut.

Certains attributs sont définis comme des booléens, ce qui signifie que vous pouvez spécifier leur valeur et laisser tout le reste de côté. Par exemple, au lieu de disabled=" désactivé ", vous n'incluez que la partie en gras. En HTML 4, vous debe n'incluent que la partie en gras car la version complète est marquée comme une fonction avec un soutien limité (bien que cela soit moins vrai aujourd'hui que lorsque la spécification a été écrite).

À partir de HTML 5, les règles ont changé et maintenant vous incluez seulement le nom et non la valeur. Cela ne fait aucune différence dans la pratique, car le nom et la valeur sont les mêmes.

El Propriété DOM est également appelé disabled et est un booléen qui prend true o false .

foo.disabled = true;

En théorie, vous pouvez aussi foo.setAttribute('disabled', 'disabled'); y foo.removeAttribute("disabled") mais je ne m'y fierais pas avec les anciennes versions d'Internet Explorer (qui sont notoirement boguées lorsqu'il s'agit de l'accès à l'information). setAttribute ).

0 votes

Serait-il judicieux de faire les deux, c'est-à-dire de modifier la propriété et de définir l'attribut, ou est-ce trop compliqué ?

0 votes

Qu'est-ce que foo en foo.disabled = true; ? Est-ce l'identifiant de ce bouton ?

0 votes

@stack - Une variable contenant une référence à l'élément collecté par le moyen de votre choix (par exemple, querySelector).

157voto

kaushar Points 731

Pour désactiver

document.getElementById("btnPlaceOrder").disabled = true; 

pour permettre

document.getElementById("btnPlaceOrder").disabled = false;

3 votes

Pour une raison quelconque, cela a fonctionné pour moi, même si $('#btnPlaceOrder').disabled = false; ne le fait pas.

5 votes

J'ai utilisé $('#btnPlaceOrder')[0].disabled = false car le sélecteur jquery semble retourner un tableau. Hausser les épaules.

6 votes

Jquery !== javascript. jquery renvoie un sélecteur de type tableau.

22voto

Andy E Points 132925

C'est un attribut, mais un attribut booléen (il n'a donc pas besoin d'un nom, juste d'une valeur - je sais, c'est bizarre). Vous pouvez définir l'équivalent de la propriété en Javascript :

document.getElementsByName("myButton")[0].disabled = true;

2 votes

Il a besoin d'une valeur, c'est le nom dont il n'a pas besoin. (Étrange, mais vrai).

1 votes

@David : Je me souviens d'avoir déjà lu cela, c'est corrigé. C'est en effet étrange et cela aurait probablement plus de sens si les surligneurs syntaxiques l'honoraient correctement :-)

10voto

Maksim Kondratyuk Points 818

Essayez ce qui suit :

document.getElementById("id").setAttribute("disabled", "disabled");

4 votes

Comme David Dorward a mentionné Si l'on ne peut pas s'y fier correctement d'un navigateur à l'autre, il convient d'utiliser l'équivalent de la propriété.

4voto

dplass Points 1103

Si vous avez l'objet bouton, appelé b : b.disabled=false;

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