2009-09-08 9 views
1

Je sais que cette question a déjà été asked mais la mienne est un peu différente.réglage du texte dans la zone de texte quand il contient des balises html

J'ai un textarea dont la valeur que j'ai mis comme ceci:

<textarea><span>all this inside textarea</span></textarea> 

maintenant je fais des ajax avec jQuery et que vous souhaitez définir la valeur de la zone de texte via jQuery.

Voici mon code jQuery.

jQuery(function(){ 
    jQuery("select#rooms").change(function(){ 
    var options = ''; 
    jQuery.getJSON("/admin/selection.php",{id: jQuery(this).val(), ajax: 'true'}, 
    function(j){ 
     for (var i = 0; i < j.length; i++) { 
     options = j[i].topImage; 
jQuery('#toppic').val(options); 
jQuery('#title').val(j[i].title); 
alert(j[i].content); //this is text area content. it has html tags 
jQuery('#content').attr(j[i].content); //text area 
     } 
    }) 
    }) 
}) 

EDIT: ma réponse JSON est:

[ {topImage: 'cfil823', title: 'Dining', content: '<SPAN STYLE= "" >Dining Rooms must be simultaneously inviting enough for a festive Sunday brunch and intimate enough for a 
crown jewel in the room. </SPAN>'}] 

est-il un moyen d'échapper à jquery balises html?

En outre, au départ de la zone de texte a été mis comme ceci:

<textarea id="content" wrap="hard"><?php echo $comma_separated?></textarea> 

Répondre

3

Vous devez définir le contenu textarea avec la fonction val:

Change:

jQuery('#content').attr(j[i].content); 

Pour:

jQuery('#content').val(j[i].content); 

Edit: En réponse à votre commentaire, vous devez vérifier l'objet JSON retour de votre demande, je vous recommande fortement d'utiliser Firebug pour déboguer votre rappel

Le textarea est pas été effacé parce que je suis assez sûr que j[i].content est undefined, si vous voulez effacer sa valeur dans ce cas, vous pouvez:

jQuery('#content').val(j[i].content || ''); 

donc, si j[i].content est undefined, null, 0 ou false, la zone de texte sera effacé.

+0

hmm thats pas travailler non plus. bien que le contenu que je reçois a html je devrais toujours être capable de voir quelque chose quand j'imprime la valeur par alerte? En ce moment je ne vois rien dans la boîte d'alerte. peut-être, je ne reçois rien de l'extrémité arrière .. mais alors la valeur actuelle de la zone de texte devrait être effacée ..qui ne se produit pas non plus. – josh

+0

a pris vos conseils et a enquêté sur la réponse de JSON. s'il vous plaît voir mon edit – josh

0
<textarea><span>all this inside textarea</span></textarea> 

Ceci n'est pas valide. Comme il le navigateur nettoyer après vous et tournez pas une telle chose comme balises à l'intérieur-a-textarea, dans ce que vous devriez avoir écrit:

<textarea>&lt;span>all this inside textarea&lt;/span></textarea> 

mais vous ne devriez pas compter sur elle. Si votre texte contient la chaîne </textarea>, vous perdrez et risquez de subir des trous d'injection de script.

Définir textarea.value, ou jQuery $(textarea).val(), d'autre part, devrait contenir des caractères comme < directement, car ils sont simplement en texte brut, pas HTML.

En ce moment, je ne vois pas quoi que ce soit dans la zone d'alerte

Alors CMS est juste et votre j[i].content ne contient pas le contenu HTML pensez.

+0

désolé si ma question était trompeuse mais les étiquettes