2011-05-16 3 views
1

J'ai un CMS très basique que j'ai mis en place avec PHP et MySQL. Tout fonctionne bien, sauf que je ne trouve pas de moyen de créer des champs de texte pouvant contenir plusieurs paragraphes (par exemple, des articles de blog, des descriptions de services détaillées). Les données sont stockées dans MySQL avec <br> s entre les paragraphes, mais quand je le rappelle pour l'affichage, toutes les coupures sont supprimées. Il n'y a rien dans le PHP qui sortirait html (pas d'ajustement des entités html, remplacement de chaîne, etc.) Idéalement, je serais en mesure d'enrouler le curseur dans <p></p> comme cette zone de texte que je suis en train de taper maintenant.Plusieurs paragraphes dans un seul champ de formulaire - Ajout de Jquery au clavier

Aujourd'hui j'ai essayé JQuery.

<script type="text/javascript"> 
$(document).ready(function(){ 
$('#thetest').keydown(function(event) { 
if (event.keyCode == '13') { 
    $('#thetest').append('<p>Test</p>'); 
}); 
}); 
</script> 

<form action="test_upload.php" enctype="multipart/form-data" method="POST"> 
<p>Content: </p> 
<textarea wrap="virtual" id="thetest" name="thetest" value="" 
autocomplete="off" rows="20"cols="100"> 
</textarea> 
<input type="submit" name="submit" value="Upload" /> 
</form> 

Si quelqu'un pouvait me diriger dans la bonne direction, je l'apprécierais grandement. Je pense qu'il y aurait un plugin jquery pour les formulaires qui le manipuleraient, mais je n'en ai pas trouvé un. Merci d'avance.

+1

Pourriez-vous utiliser TinyMCE? http://tinymce.moxiecode.com/ – captainclam

+0

Les zones de texte ne peuvent contenir que du texte brut avec '\ n' comme nouvelle ligne. Utilisez TinyMCE comme @captainclam suggéré, ou luttez avec les mises en garde de contenteditable vous-même. – DarthJDG

Répondre

0

Est-ce que vos utilisateurs tapent dans les balises de paragraphe, ou voulez-vous le style WYSIWYG? Si c'est le premier, vous ne devriez pas avoir de problème (et si vous le faites, vous pouvez juste htmlentities() avant qu'il n'entre et décoder quand vous le récupérez). Si c'est le dernier, je traiterais la chaîne $ _POST ['thetest'] comme elle vous revient avant de la mettre dans votre base de données. Vous pouvez preg_replace() vos caractères de nouvelle ligne avec <p> et </p> avant de le stocker, avec plus de caractères de nouvelle ligne pour le rendre lisible bien sûr.

Ou vous pouvez tricher avec <pre> juste pour préserver l'espace blanc, mais ce ne serait pas sémantiquement responsable: p

+0

Mes utilisateurs ne tapent pas de tags et je cherche WYSIWYG. Depuis que j'ai posté la question originale, j'ai commencé à utiliser le plugin CKEditor Jquery et cela fonctionne, mais j'aimerais savoir comment effectuer cette tâche pour ma propre programmation. J'ai essayé preg_replace() sur les caractères de nouvelle ligne, mais les caractères de nouvelle ligne n'apparaissaient pas. Est-ce que c'est difficile de passer à l'étape suivante avec jquery? – thegumba

+0

Le code que j'ai fourni dans ma réponse devrait faire ce que vous avez demandé. –

0

Essayez d'utiliser nl2br(htmlspecialchars(stripslashes($paragraphs))), il affichera le texte exactement comment les entrées de l'utilisateur il.

Questions connexes