Comment ajouter un “readonly” attribut à un <input>?
Comment puis-je ajouter readonly
à un <input>
? .attr('readonly')
ne fonctionne pas.
- .attr('readonly', true) fonctionne, d'autres ne
- .attr('readonly', 'readonly') fonctionne également
- Ça dépend de l'DOCTYPE utilisez-vous. Pour DTD HTML 4.01 de la réponse de la CMS est fonctionnel et valide HTML 4.01. Si vous utilisez une DTD XHTML alors la réponse de ceejayoz est travail et XHTML valide.
- Il ne dépend pas de doctype, le DOM est la même, qu'il a été lu par HTML ou XML, et en tout cas XHTML est toujours presque toujours en fait servi en tant que HTML n'XML, pour IE compatibilité.
Vous devez vous connecter pour publier un commentaire.
jQuery <1.9
jQuery 1.9+
Lire plus sur différence entre prop et attr
Utilisation $.prop()
$.prop()
: Prop va définir l'attribut lecture seule à vide/chaîne vide, donc si vous avez des CSS qui utilise le sélecteur d'attributs pour[readonly="readonly"]
, alors vous devrez le changer[readonly]
(ou comprendre à la fois).Readonly est un attribut tel que défini dans le code html, donc le traiter comme tel.
Vous devez avoir quelque chose comme readonly="readonly" dans l'objet que vous travaillez avec, si vous voulez ne pas être modifiable.
Et si vous voulez qu'il soit modifiable à nouveau, vous n'aurez pas quelque chose comme readonly=" (ce n'est pas la norme, si j'ai bien compris). Vous avez vraiment besoin de supprimer l'attribut dans son ensemble.
En tant que tel, tout en utilisant jquery ajout et de retrait c'est ce qui fait sens.
Mettre quelque chose en lecture seule:
Supprimer readonly:
C'était la seule alternative qui a vraiment fonctionné pour moi.
Espérons que cela aide!
.attr('readonly', 'readonly')
devrait faire l'affaire. Votre.attr('readonly')
seulement renvoie la valeur, il ne définit pas un..attr
valeur ne doit être une chaîne ou un nombre, pas un booléen, selon le jQuery docs: api.jquery.com/attr/#attr2 Aussi, HTML "attributs booléens" ne devrait être une chaîne vide, ou de la valeur de l'attribut. Je pense que la solution est d'utiliser.prop()
pour éviter toute confusion.Je pense que "désactivé" exclut l'entrée d'être envoyé sur le POST
Vous pouvez désactiver la lecture seule à l'aide de la .removeAttr;
Pour permettre readonly:
Pour la désactivation readonly
$("#descrip").removeAttr("readonly");
?Utiliser le setAttribute de la propriété. Remarque dans l'exemple que si 1 sélectionnez appliquer l'attribut lecture seule sur zone de texte, sinon supprimez l'attribut en lecture seule.
http://jsfiddle.net/baqxz7ym/2/
Pour la version jQuery < 1.9:
Pour la version jQuery >= 1.9: