web-dev-qa-db-fra.com

javascript supprime l'attribut "disabled" de l'entrée HTML

Comment puis-je supprimer l'attribut "disabled" d'une entrée HTML à l'aide de javascript?

<input id="edit" disabled>

at onClick Je veux que ma balise d’entrée ne soit pas composée d’un attribut "disabled".

74
Jam Ville

Définissez la propriété disabled de l'élément sur false:

document.getElementById('my-input-id').disabled = false;

Si vous utilisez jQuery, l'équivalent serait:

$('#my-input-id').prop('disabled', false);

Pour plusieurs champs de saisie, vous pouvez y accéder par classe:

var inputs = document.getElementsByClassName('my-input-class');
for(var i = 0; i < inputs.length; i++) {
    inputs[i].disabled = false;
}

document pourrait être remplacé par un formulaire, par exemple, pour rechercher uniquement les éléments à l'intérieur de ce formulaire. Vous pouvez également utiliser getElementsByTagName('input') pour obtenir tous les éléments en entrée. Dans votre itération for, vous devrez alors vérifier que inputs[i].type == 'text'.

164
David Hedlund

Pourquoi ne pas simplement supprimer cet attribut?

  1. Vanilla JS: elem.removeAttribute('disabled')
  2. jQuery: elem.removeAttr('disabled')
26
Dragos Rusu

Pour définir la valeur disabled sur false à l'aide de la propriété name de l'entrée:

document.myForm.myInputName.disabled = false;
2
Henry Hedden
method 1 <input type="text" onclick="this.disabled=false;" disabled>
<hr>
method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
<hr>
method 3 <input type="text" onclick="this.removeAttribute('readonly');" readonly>

le code des réponses précédentes ne semble pas fonctionner en mode en ligne, mais il existe une solution de contournement: méthode 3.

voir la démo https://jsfiddle.net/eliz82/xqzccdfg/

0
eliz82