2010-11-13 5 views
0

Dans une application Rails en utilisant un prototype, j'ai le code suivant (simplifié) à mon avis (Edit: remplacé par la sortie HTML réelle):Remplacer le contenu textarea avec javascript (prototype)

<textarea cols="34" id="note" name="note" rows="5"></textarea> 
<a href="#" onclick="$('note').update('test note'); return false;">copy note</a> 

Cela fonctionne très bien sur une nouvelle visite de page et fait ce qui est prévu: Insérer "note de test" dans la zone de texte en cliquant sur le lien.

Cependant, si je supprime ou édite le texte dans le champ textarea et que je clique à nouveau sur le lien, le texte n'est pas remplacé à nouveau. Cela arrive à la fois dans Safari et Firefox. Aucune erreur javascript ne se produit.

Curieusement, Firebug montre le texte entre les étiquettes sur ces clics suivants étant remplacé à nouveau.

Qu'est-ce qui me manque?

EDIT:

Je trouve ceci: http://scott-tabar-safari.blogspot.com/2008/01/prototype-v16-ajaxupdater-and-textarea.html. Ajouter un $ ('formidable'). Reset() le corrige. De meilleures solutions sont toujours les bienvenues.

Répondre

1

Vous devez utiliser la propriété value de l'objet DOM textarea:

<a href="#" onclick="$('note').value = 'test note'; return false;">copy note</a> 
+0

Oui je l'ai déjà essayé et ça fonctionne - cependant, je générer ce javascript en utilisant prototype_helper au bout de rails point de vue, et ce est ce qu'il génère. – Thilo

+0

Eh bien, ma modification ci-dessus fonctionne pour l'affectation via = mais pas pour l'ajout en utilisant + = - tout ce qui a été tapé manuellement est effacé en appelant reset. Donc, je suppose que c'est au javascript brut. – Thilo

Questions connexes