Je dois d'abord désactiver les entrées puis cliquer sur un lien pour les activer.
C'est ce que j'ai essayé jusqu'à présent, mais cela 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
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'));
});
javascript
jquery
disabled-input
fatiDev
la source
la source
Réponses:
Utilisez toujours la
prop()
méthode pour activer ou désactiver des éléments lorsque vous utilisez jQuery (voir ci-dessous pour savoir pourquoi).Dans votre cas, ce serait:
Exemple jsFiddle ici.
Au fond,
prop()
devrait être utilisé lors de l' obtention ou la mise en propriétés ( par exempleautoplay
,checked
,disabled
etrequired
entre autres).En utilisant
removeAttr()
, vous supprimez complètement l'disabled
attribut lui-même - tout enprop()
définissant simplement la valeur booléenne sous-jacente de la propriété sur false.Bien que ce que vous voulez faire puisse être fait en utilisant
attr()
/removeAttr()
, cela ne signifie pas que cela devrait être fait (et peut provoquer un comportement étrange / problématique, comme dans ce cas).Les extraits suivants (extraits de la documentation jQuery pour prop () ) expliquent ces points plus en détail:
la source
attr
vs lesprop
cases à cocher: w3.org/TR/html5/forms.html#concept-input-checked-dirty, sauf pour la magie de contournement interne jQuery..prop()
été exécuté sur l'élément pointé parthis
(this.prop("disabled", false)
, mais étant dans un rappel, il était lié au mauvais élément, j'ai donc dû faire lavar that = this
solution de contournement commune . Essayer de jouer avec.apply()
/.call()
ne fonctionnait pas bien; je ne sais pas Pourquoi vérifier une foisconsole.log(this)
s'il est réglé sur l'objet souhaité, juste avant d'appelerthis.prop(...)
disabled
propriété désactivera l'élément. Par exemple, le fait de<button disabled="false"></button>
ne pas activer le bouton entraîne la suppression de la propriété. En appelant$('button').prop('disabled', false);
jQuery supprimera la propriété pour vous, comme je l'ai observé dans ce codepen (inspectez pour voir la suppression de la propriété).http://jsfiddle.net/ZwHfY/
la source
pour supprimer l'utilisation des attributs désactivés,
et pour ajouter l'utilisation des attributs désactivés,
Prendre plaisir :)
la source
Utilisez comme ça,
HTML:
JS:
la source
<a>
, sur lequel.prop('disabled', false)
ne fonctionne pas. Je l'ai changé en a<button>
et ça fonctionne maintenantJe pense que vous essayez de basculer l'état désactivé, dans ce cas, vous devriez utiliser ceci (à partir de cette question ):
Voici un violon qui fonctionne.
la source
Pensé que vous pouvez facilement configurer
la source
C'était le seul code qui fonctionnait pour moi:
Notez que c'est le cas
removeProp
et nonremoveAttr
.J'utilise
jQuery 2.1.3
ici.la source
2018, sans JQuery
Je sais que la question concerne JQuery: cette réponse est juste FYI.
la source
Cette question mentionne spécifiquement jQuery, mais si vous cherchez à accomplir cela sans jQuery, l'équivalent en vanilla JavaScript est:
la source
elem.removeAttr('disabled');
travaille pour moi