web-dev-qa-db-fra.com

val () vs text () pour 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 textarea.

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.

104
Christophe

Le meilleur moyen de définir/obtenir la valeur d'une zone de texte est la méthode .val(), .value.

.text() utilise en interne la méthode .textContent (ou .innerText pour IE) pour obtenir le contenu d'un <textarea>. Les cas de test suivants illustrent les relations 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 valuepropriété, utilisé par .val() indique toujours la valeur visible actuelle, alors que la valeur renvoyée par text() peut être fausse.

145
Rob W

.val() fonctionne toujours avec les éléments textarea.

.text() fonctionne parfois et échoue d'autres fois! Ce n'est pas fiable (testé dans Chrome 33)

Le mieux est que .val() fonctionne de manière transparente avec d'autres éléments de formulaire (comme input) alors que .text() échoue.

10