Toujours utiliser l' prop()
méthode de d'activer ou de désactiver des éléments lors de l'utilisation de jQuery (voir ci-dessous pourquoi).
Dans votre cas, il serait:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});
jsFiddle exemple ici.
Pourquoi utiliser prop()
quand vous pourriez utiliser attr()
/removeAttr()
pour ce faire?
Fondamentalement, prop()
doit être utilisé lors de l'obtention ou du réglage des propriétés (comme autoplay
, checked
, disabled
et required
- parmi d'autres).
En utilisant removeAttr()
, vous êtes complètement retrait de l' disabled
de l'attribut lui-même - tout en prop()
est simplement la définition de la propriété sous-jacent de la valeur booléenne false.
Tout ce que vous voulez faire peut être fait en utilisant attr()
/removeAttr()
, cela ne signifie pas qu'il doit être fait (et peut provoquer d'étranges/comportements problématiques, comme dans ce cas).
Les extraits suivants (tirés de la documentation de jQuery pour prop()) expliquer ces points plus en détail:
"La différence entre les attributs et les propriétés peuvent être importants dans
des situations spécifiques. Avant de jQuery 1.6, l' .attr()
méthode parfois
a pris les valeurs de propriété en compte lors de la récupération de certains attributs,
ce qui pourrait causer un comportement incohérent. Comme de jQuery 1.6, l' .prop()
méthode fournit un moyen explicitement extraire les valeurs de propriété, tandis que
.attr()
récupère les attributs."
"Les propriétés généralement une incidence sur la dynamique de l'état d'un élément du DOM sans
la modification de la sérialisé attribut HTML. Les exemples incluent l' value
la propriété des éléments d'entrée, l' disabled
de la propriété d'entrées et de
boutons, ou l' checked
de la propriété d'une case à cocher. L' .prop()
méthode
doit être utilisé pour définir disabled
et checked
, au lieu de l' .attr()
la méthode. L' .val()
méthode doit être utilisée pour l'obtention et la configuration
value
."