$input.disabled = true;
ou
$input.disabled = "disabled";
Quelle est la méthode standard? Et, inversement, comment activez-vous une entrée désactivée?
$input.disabled = true;
ou
$input.disabled = "disabled";
Quelle est la méthode standard? Et, inversement, comment activez-vous une entrée désactivée?
Réponses:
jQuery 1.6+
Pour modifier la
disabled
propriété, vous devez utiliser la.prop()
fonction.jQuery 1.5 et inférieur
La
.prop()
fonction n'existe pas, mais.attr()
fait similaire:Définissez l'attribut désactivé.
Pour réactiver, la méthode appropriée consiste à utiliser
.removeAttr()
Dans n'importe quelle version de jQuery
Vous pouvez toujours compter sur l'objet DOM réel et est probablement un peu plus rapide que les deux autres options si vous ne traitez qu'avec un seul élément:
L'avantage de l'utilisation des méthodes
.prop()
ou.attr()
est que vous pouvez définir la propriété pour un groupe d'éléments sélectionnés.Remarque: dans la version 1.6, il existe une
.removeProp()
méthode qui ressemble beaucoupremoveAttr()
, mais elle NE DEVRAIT PAS ÊTRE UTILISÉE sur des propriétés natives comme'disabled'
Extrait de la documentation:En fait, je doute qu'il existe de nombreuses utilisations légitimes de cette méthode, les accessoires booléens sont faits de telle manière que vous devez les définir sur false au lieu de les "supprimer" comme leurs homologues "attribut" dans 1.5
la source
':input'
, pas seulement'input'
. Ce dernier sélectionne uniquement les éléments <input> réels.input,textarea,select,button
est un peu mieux à utiliser que:input
-:input
car un sélecteur est assez inefficace car il doit sélectionner*
puis boucler sur chaque élément et filtrer par variable - si vous passez directement les 4 sélecteurs de variable, c'est BEAUCOUP plus rapide. De plus, ce:input
n'est pas un sélecteur CSS standard, donc tous les gains de performances possiblesquerySelectorAll
sont perdus.removeProp("disabled")
cause le problème de "la suppression complète des propriétés et leur non-ajout", comme l'a souligné @ThomasDavidBaker, dans le cas de certains navigateurs comme Chrome, alors que cela fonctionnait bien sur certains comme Firefox. Nous devons vraiment faire attention ici. Utilisez toujours à la.prop("disabled",false)
placeJuste pour le plaisir de nouvelles conventions et de le rendre adaptable à l'avenir (sauf si les choses changent radicalement avec ECMA6 (????):
et
la source
$(document).on('event_name', '#your_id', function() {...})
au lieu de$('#your_id').on('event_name', function() {...})
. Comme décrit dans la documentation jQuery .on (), le premier utilise la délégation et écoute tous lesevent_name
événements qui remontentdocument
et vérifie leur correspondance#your_id
. Ce dernier écoute$('#your_id')
uniquement les événements et cela évolue mieux.Parfois, vous devez désactiver / activer l'élément de formulaire comme l'entrée ou la zone de texte. Jquery vous aide à le faire facilement en définissant l'attribut désactivé sur "désactivé". Par exemple:
Pour activer l'élément désactivé, vous devez supprimer l'attribut "désactivé" de cet élément ou vider sa chaîne. Par exemple:
voir: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
la source
ou
la source
Vous pouvez mettre ceci quelque part global dans votre code:
Et puis vous pouvez écrire des trucs comme:
la source
prop
et nonattr
avec ladisabled
propriété pour qu'elle fonctionne correctement (en supposant que jQuery 1.6 ou supérieur).attr
? J'utilise le code ci-dessus dans certains projets et pour autant que je m'en souvienne, cela fonctionne bienchecked
propriété des cases à cocher. L'utilisationattr
ne donnera pas le même résultat.Si vous souhaitez simplement inverser l'état actuel (comme un comportement de bouton à bascule):
la source
Il existe de nombreuses façons de les utiliser, vous pouvez activer / désactiver n'importe quel élément :
Approche 1
Approche 2
Si vous utilisez jQuery 1.7 ou une version supérieure, utilisez prop () au lieu de attr ().
Si vous souhaitez activer un élément, il vous suffit de faire le contraire de ce que vous avez fait pour le désactiver. Cependant, jQuery fournit un autre moyen de supprimer tout attribut.
Approche 1
Approche 2
Approche 3
Encore une fois, si vous utilisez jQuery 1.7 ou une version supérieure, utilisez prop (), au lieu de attr (). C'est. C'est ainsi que vous activez ou désactivez n'importe quel élément à l'aide de jQuery.
la source
Mise à jour pour 2018:
Maintenant, il n'y a plus besoin de jQuery et cela fait longtemps que
document.querySelector
oudocument.querySelectorAll
(pour plusieurs éléments) fait presque exactement le même travail que $, plus des éléments plus explicitesgetElementById
,getElementsByClassName
,getElementsByTagName
Désactiver un champ de la classe "input-checkbox"
ou plusieurs éléments
la source
Vous pouvez utiliser la méthode jQuery prop () pour désactiver ou activer l'élément de formulaire ou contrôler dynamiquement à l'aide de jQuery. La méthode prop () nécessite jQuery 1.6 et supérieur.
Exemple:
la source
Désactiver:
Activer:
la source
Désactivez true pour le type d'entrée:
la source
$("input[name=method]").prop('disabled', true);
ça marche pour moi
la source
J'ai utilisé @gnarf answer et l'ai ajouté en tant que fonction
Ensuite, utilisez comme ceci
la source
2018, sans JQuery (ES6)
Désactiver tout
input
:Désactiver
input
avecid="my-input"
La question est avec JQuery, c'est juste FYI.
la source
Approche 4 (il s'agit de l'extension de la réponse du codeur sauvage )
la source
Utilisez comme ça,
la source
la source
Dans jQuery Mobile:
Pour désactiver
Pour activer
la source