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?
$("input").attr("disabled", true);
à partir de ... Je n'en sais plus.
Nous sommes en décembre 2013 et je ne sais vraiment pas quoi vous dire.
D'abord, il s'agissait toujours de .attr()
, puis de .prop()
. Je suis donc revenu ici pour mettre à jour la réponse et la rendre plus précise.
Puis, un an plus tard, jQuery a de nouveau changé d’avis et je ne veux même pas en tenir compte.
Longue histoire courte, à partir de maintenant, c'est la meilleure réponse: "vous pouvez utiliser les deux ... mais ça dépend."
Vous devriez plutôt lire cette réponse: https://stackoverflow.com/a/5876747/25749
Et leurs notes de version pour ce changement sont incluses ici:
Ni .attr () ni .prop () ne doivent être utilisés pour obtenir/définir une valeur. Utilisez la méthode .val () à la place (bien que l'utilisation de .attr ("value", "somevalue") continue de fonctionner, comme c'était le cas avant la version 1.6).
Résumé de l'utilisation préférée
La méthode .prop () doit être utilisée pour les attributs/propriétés booléens et pour les propriétés qui n'existent pas en HTML (telles que window.location). Tous les autres attributs (ceux que vous pouvez voir dans le HTML) peuvent et devraient continuer à être manipulés avec la méthode .attr ().
Ou en d'autres termes:
".prop = trucs non documentés"
".attr" = documents
... ...
Pouvons-nous tous apprendre une leçon sur la stabilité de l'API ...
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");
Si vous utilisez jQuery, il existe plusieurs 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);
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';
});
});
$(element).prop('disabled', true); //true|disabled will work on all
$(element).attr('disabled', true);
element.disabled = true;
element.setAttribute('disabled', true);
Toutes les solutions ci-dessus sont des solutions parfaitement valables. Choisissez celui qui correspond le mieux à vos besoins.
Utilisez simplement la méthode attr()
de jQuery
$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');