$input.disabled = true;
ou
$input.disabled = "disabled";
Quelle est la méthode standard ? Et, inversement, comment activer une entrée désactivée ?
$input.disabled = true;
ou
$input.disabled = "disabled";
Quelle est la méthode standard ? Et, inversement, comment activer une entrée désactivée ?
Pour modifier le disabled
vous devez utiliser la propriété .prop()
fonction.
$("input").prop('disabled', true);
$("input").prop('disabled', false);
Le site .prop()
n'existe pas, mais .attr()
fait de même :
Définissez l'attribut désactivé.
$("input").attr('disabled','disabled');
Pour activer à nouveau, la méthode correcte consiste à utiliser .removeAttr()
$("input").removeAttr('disabled');
Vous pouvez toujours compter sur l'objet DOM actuel et c'est probablement un peu plus rapide que les deux autres options si vous ne traitez qu'un seul élément :
// assuming an event handler thus 'this'
this.disabled = true;
L'avantage d'utiliser le .prop()
ou .attr()
est que vous pouvez définir la propriété pour un ensemble d'éléments sélectionnés.
Note : Dans la version 1.6, il existe un .removeProp()
qui ressemble beaucoup à removeAttr()
mais il NE DOIT PAS ÊTRE UTILISÉ sur des propriétés natives comme 'disabled'
Extrait de la documentation :
Remarque : n'utilisez pas cette méthode pour supprimer des propriétés natives telles que coché, désactivé ou sélectionné. Cela supprimera complètement la propriété et, une fois supprimée, elle ne pourra plus être ajoutée à l'élément. Utilisez .prop() pour définir ces propriétés à false.
En fait, je doute qu'il y ait beaucoup d'utilisations légitimes de cette méthode, les props booléens sont faits de telle manière que vous devez les mettre à faux au lieu de les "supprimer" comme leurs homologues "attributs" en 1.5.
Par ailleurs, n'oubliez pas que, si vous souhaitez désactiver TOUS les contrôles de saisie du formulaire - y compris les cases à cocher, les radios, les zones de texte, etc. - vous devez sélectionner ':input'
pas seulement 'input'
. Ce dernier ne sélectionne que les éléments <input> réels.
@CornelMasson input,textarea,select,button
est un peu plus facile à utiliser que :input
-- :input
en tant que sélecteur est assez inefficace car il doit sélectionner *
puis boucle sur chaque élément et filtre par nom de tigre - si vous passez les 4 sélecteurs de nom de tigre directement, c'est BEAUCOUP plus rapide. Aussi, :input
n'est pas un sélecteur CSS standard. Par conséquent, tout gain de performance possible grâce à l'utilisation de l'option querySelectorAll
sont perdus
Est-ce que cela empêche simplement l'utilisateur d'y accéder, ou est-ce que cela le supprime réellement de la requête web ?
C'est juste pour avoir de nouvelles conventions et pour pouvoir s'adapter à l'avenir (à moins que les choses ne changent radicalement avec l'ECMA6 ( ????)) :
$(document).on('event_name', '#your_id', function() {
$(this).removeAttr('disabled');
});
et
$(document).off('event_name', '#your_id', function() {
$(this).attr('disabled','disabled');
});
Jikes ! Pourquoi $(document).on('event_name', '#your_id', function() {...})
au lieu de $('#your_id').on('event_name', function() {...})
. Comme décrit dans le Documentation de jQuery .on() le premier utilise la délégation et écoute tous event_name
les événements qui s'accumulent jusqu'à document
et les vérifie pour une correspondance #your_id
. Ce dernier écoute spécifiquement $('#your_id')
uniquement les événements et qui s'adapte mieux.
La première fonctionne pour les éléments insérés dans le DOM à tout moment, la seconde uniquement pour ceux qui existent à ce moment-là.
// Disable #x
$( "#x" ).prop( "disabled", true );
// Enable #x
$( "#x" ).prop( "disabled", false );
Parfois, vous avez besoin de désactiver/activer l'élément de formulaire comme l'entrée ou le textarea. Jquery vous aide à le faire facilement en définissant l'attribut disabled à "disabled". Par exemple :
//To disable
$('.someElement').attr('disabled', 'disabled');
Pour activer un élément désactivé, vous devez supprimer l'attribut "disabled" de cet élément ou vider sa chaîne. Par exemple
//To enable
$('.someElement').removeAttr('disabled');
// OR you can set attr to ""
$('.someElement').attr('disabled', '');
référer : http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
Pour n'importe quelle version de jQuery, vous devez utiliser seulement .attr()
et .removeAttr()
$("input").attr('disabled','disabled');
$("input").removeAttr('disabled');
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
6 votes
Duplicata possible de Suppression de l'attribut "disabled" à l'aide de JQuery ?
1 votes
J'ai trouvé le Dépend de plugin qui pourrait vous être utile