180 votes

Ajouter un attribut désactivé à l'élément d'entrée en utilisant Javascript

J'ai un champ de saisie et je souhaite le désactiver et le masquer en même temps pour éviter les problèmes lors du portage de mon formulaire.

Jusqu'à présent, j'ai le code suivant pour masquer ma saisie:

 $(".shownextrow").click(function() { 
    $(this).closest("tr").next().show().find('.longboxsmall').hide();
});
 

C'est l'entrée qui est cachée à la suite:

 <input class="longboxsmall" type="text" />
 

Comment puis-je également ajouter l'attribut disabled à l'entrée?

371voto

Incognito Points 10637

$("input").attr("disabled", true); ... je ne sais plus.

C'est en décembre 2013 et je n'ai vraiment aucune idée de quoi vous dire.

D'abord il a toujours été .attr(), alors qu'il était toujours .prop(), alors je suis revenu ici mise à jour de la réponse de plus en plus précis.

Puis, un an plus tard, jQuery changé leur esprit nouveau et je n'ai même pas envie de garder une trace de ce.

Longue histoire courte, de plein droit maintenant, c'est la meilleure réponse: "vous pouvez utiliser les deux... mais ça dépend".

Vous devriez lire cette réponse à la place: http://stackoverflow.com/a/5876747/257493

Et leurs notes de publication pour que les changements sont inclus ici:

Ni .attr() ni .prop() doit être utilisée pour obtenir/valeur de réglage. Utiliser le .val() la méthode la place (bien que l'utilisation de .attr("value", "somevalue") continuera à travailler, comme il l'a fait avant 1.6).

Résumé de l'Usage Privilégié

L' .prop() la méthode doit être utilisée pour les attributs de type boolean/propriétés et des propriétés qui n'existent pas dans le html (comme la fenêtre.emplacement). Tous les autres attributs (ceux que vous pouvez voir dans le code html) peut et doit continuer à être manipulé avec le .attr() la méthode.

Ou, en d'autres mots:

".prop = non-document de trucs"

".attr" = document trucs

... ...

Puissions-nous tous apprendre une leçon ici à propos de la stabilité de l'API...

74voto

Mircea Stanciu Points 504

Code de travail de mes sources:

MONDE HTML

 <select name="select_from" disabled>...</select>
 

JS WORLD

 var from = jQuery('select[name=select_from]');

//add disabled
from.attr('disabled', 'disabled');



//remove it
from.removeAttr("disabled");
 

24voto

Connor Points 7403

Si vous utilisez jQuery, il existe différentes façons de définir l'attribut désactivé.

 var $element = $(...);
    $element.prop('disabled', true);
    $element.attr('disabled', true); 

    // The following do not require jQuery
    $element.get(0).disabled = true;
    $element.get(0).setAttribute('disabled', true);
    $element[0].disabled = true;
    $element[0].setAttribute('disabled', true);
 

13voto

user113716 Points 143363

Vous pouvez obtenir l'élément DOM et définir directement la propriété disabled.

 $(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').hide()[0].disabled = 'disabled';
});
 

ou s'il y en a plusieurs, vous pouvez utiliser each() pour les définir tous:

 $(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').each(function() {
               this.style.display = 'none';
               this.disabled = 'disabled';
          });
});
 

6voto

Gabe Points 24378

Utilisez simplement la méthode attr() jQuery

 $(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');
 

Prograide.com

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.

Powered by:

X