val() ou texte() pour les textarea
J'utilise jQuery, et je me demande si je devrais utiliser val () ou text () (ou une autre méthode) pour lire et mettre à jour le contenu d'une zone de texte.
J'ai essayé les deux et j'ai eu des problèmes avec les deux. Lorsque j'utilise text () pour mettre à jour textarea, les sauts de ligne (n) ne fonctionnent pas. Lorsque j'utilise val () pour récupérer le contenu textarea, le texte est tronqué s'il est trop long.
3 réponses
La meilleure façon de définir/obtenir la valeur d'une zone de texte est .val()
, .value
Méthode.
.text()
utilise en interne la .textContent
(ou .innerText
pour IE) méthode pour obtenir le contenu d'un <textarea>
. Les cas de test suivants illustrent la relation entre text()
et .val()
:
var t = '<textarea>';
console.log($(t).text('test').val()); // Prints test
console.log($(t).val('too').text('test').val()); // Prints too
console.log($(t).val('too').text()); // Prints nothing
console.log($(t).text('test').val('too').val()); // Prints too
console.log($(t).text('test').val('too').text()); // Prints test
Le value
la propriété , utilisée par .val()
affiche toujours la valeur visible actuelle, alors que la valeur de retour de text()
peut être erronée.
.val()
travaille toujours avec textarea
éléments.
.text()
fonctionne parfois et échoue d'autres fois! Ce N'est pas fiable (testé dans Chrome 33)
Ce qui est le mieux, c'est que .val()
fonctionne de manière transparente avec d'autres éléments de formulaire (comme input
) alors que .text()
échoue.
Sélectionnez <textarea>
par nom d'attribut au lieu de l'id.
<textarea id="message" name="message"></textarea>
<script>
jQuery("textarea[name='message']").val();
</script>