103 votes

val() vs. text() pour les zones de texte

J'utilise jQuery, et je me demande si je dois utiliser val() ou text() (ou une autre méthode) pour lire et mettre à jour le contenu d'un textarea.

J'ai essayé les deux et j'ai eu des problèmes avec les deux. Lorsque j'utilise text() pour mettre à jour la zone de texte, les sauts de ligne ( \n ) ne fonctionnent pas. Lorsque j'utilise val() pour récupérer le contenu de la zone de texte, le texte est tronqué s'il est trop long.

145voto

Rob W Points 125904

La meilleure façon de définir/obtenir la valeur d'une zone de texte est l'option .val() , .value método.

.text() utilise en interne le .textContent (ou .innerText pour IE) pour obtenir le contenu d'un fichier de type <textarea> . Les cas de test suivants illustrent comment text() y .val() les uns par rapport aux autres :

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

El value propriété utilisé par .val() affiche toujours la valeur visible actuelle, tandis que text() peut être erronée.

11voto

.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 bien, c'est que .val() fonctionne également de manière transparente avec d'autres éléments de formulaire (tels que input ) alors que .text() échoue.

5voto

edercortes Points 61

Sélectionnez <textarea> par le nom de l'attribut au lieu de l'id.

<textarea id="message" name="message"></textarea>
<script>
  jQuery("textarea[name='message']").val();
</script>

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