Comment faire pour supprimer “désactivé” attribut à l'aide de jQuery?
Je dois désactiver les entrées d'abord, puis de cliquer sur un lien afin de leur permettre.
C'est ce que j'ai essayé jusqu'à présent, mais il ne fonctionne pas.
HTML:
<input type="text" disabled="disabled" class="inputDisabled" value="">
jQuery:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').removeAttr("disabled")
});
Cela me montre true
et puis false
mais rien ne change pour les entrées:
$("#edit").click(function(event){
alert('');
event.preventDefault();
alert($('.inputDisabled').attr('disabled'));
$('.inputDisabled').removeAttr("disabled");
alert($('.inputDisabled').attr('disabled'));
});
- Je ne vois pas votre problème. Que demandez-vous?
- Alors, quelle est la question? je veux dire quels sont les problèmes auxquels vous êtes confrontés
- Utiliser prop() - .prop('disabled', false)
- Si votre problème est résolu, merci de cocher la accepté (Réel) de réponse pour les autres de savoir...
- le problème est qu'il n'est pas désactivé après le clic
- j'ai essayé toutes les propositions problème restant
- double possible de Comment puis-je désactiver un bouton de soumission lors de la case à décocher? parce que la question demande comment basculer, donc à la fois d'activer et de désactiver
Vous devez vous connecter pour publier un commentaire.
Toujours utiliser le
prop()
méthode pour activer ou désactiver les éléments lors de l'utilisation de jQuery (voir ci-dessous pourquoi).Dans votre cas, il serait:
jsFiddle exemple ici.
Fondamentalement,
prop()
doit être utilisé lors de l'obtention ou de réglage de propriétés (commeautoplay
,checked
,disabled
etrequired
entre autres).En utilisant
removeAttr()
, vous supprimez complètement ledisabled
attribut lui-même - tout enprop()
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 à l'aide de
attr()
/removeAttr()
, cela ne veut pas dire qu'il devrait être fait (et peut provoquer d'étranges/comportements problématiques, comme dans ce cas).Les extraits ci-dessous (tiré de la jQuery documentation pour prop()) expliquer ces points plus en détail:
attr
vsprop
pour les cases à cocher: w3.org/TR/html5/forms.html#concept-input-checked-dirty sauf pour les internes jQuery solution de contournement de la magie..prop()
a été exécuté sur l'élément pointé parthis
(this.prop("disabled", false)
, mais le fait d'être dans un rappel, il était contraignant pour le mauvais élément, donc j'ai dû faire la communevar that = this
solution de contournement. Essayez de jouer avec.apply()
/.call()
ne fonctionnait pas bien; je ne sais pas pourquoi. Vérifier avec unconsole.log(this)
si il est mis à votre objet désiré, juste avant l'appel dethis.prop(...)
disabled
propriété de désactiver l'élément. Par exemple, avoir une<button disabled="false"></button>
ne permettra pas le bouton, la propriété doit être supprimé. En appelant$('button').prop('disabled', false);
jQuery va supprimer la propriété pour vous, comme je l'ai observé dans ce codepen (inspecter pour voir la propriété de suppression).XHTML
nécessairedisabled="disabled"
, et de nombreux navigateurs avait des insectes où il a besoin d'être explicitement définie sur désactivé (voir beaucoup de questions autour de la période 2009-2012 ex: stackoverflow.com/questions/6048022/..., stackoverflow.com/a/26035133/1586880). Comparer jQuery 1.5 vs 1,7 impl (codepen.io/anon/pen/drWmWa?les éditeurs=1010 & codepen.io/anon/pen/xBdWdJ?les éditeurs=1010) - donc, vous avez raison, il a été mis à "falsey valeur" plutôt que de "faux". Presque tous les navigateurs avaient des problèmes de mise en œuvre de retour alorshttp://jsfiddle.net/ZwHfY/
pour supprimer désactivé attribut de l'utilisation, de
et à ajouter désactivé attribut de l'utilisation, de
Profiter 🙂
L'utilisation de ce genre,
HTML:
JS:
<a>
, sur lequel.prop('disabled', false)
ne fonctionne pas. Je l'ai changé pour un<button>
et il fonctionne maintenantJe pense que vous essayez de bascule l'état désactivé, dans lequel cas, vous devez utiliser ce (à partir de cette question):
Ici, c'est un travail de violon.
C'était le seul code qui a fonctionné pour moi:
Noter que c'est
removeProp
et pasremoveAttr
.Je suis en utilisant
jQuery 2.1.3
ici.Pensé à cela, vous pouvez facilement configurer
2018, sans JQuery
Je sais que la question est à propos de JQuery: cette réponse est juste pour info.
Cette question mentionne spécifiquement jQuery, mais si vous cherchez à atteindre cet objectif sans jQuery, l'équivalent de vanille dans le JavaScript est: