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.
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 value
propriété, utilisé par .val()
indique toujours la valeur visible actuelle, alors que la valeur renvoyée par text()
peut être fausse.
.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.