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.

99
demandé sur Christophe 2012-01-13 20:58:21

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.

140
répondu Rob W 2012-01-14 03:26:57

.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.

8
répondu Kshitij Saxena -KJ- 2017-04-24 07:07:58

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>
-6
répondu edercortes 2014-02-12 14:27:50