bonjour tout le monde!
bon alors c'est parti (c'est long mais pas compliqué, la synthaxe est extremement facile)
j'ai un formulaire qui envoie un message. or je veux mettre des boutons qui permettent de mettre en gras (donc quand on clique sur le bouton, un code apparait dans mon form qui permet de mettre en gras)
pour ce faire, j'ai copié collé la fonction (n'y connaissant rien en js, je peux seulement vous afficher la fonction)
la fonction se trouve sur la page du formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 <p align="center">Envoyer un mail</p></h1> <form name="news" method="post" action="newsletter.php"> <script language="Javascript"> var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false; var regexp = new RegExp("[\r]","gi"); function storeCaret(selec) { if (isMozilla) { // Si on est sur Mozilla oField = document.forms['news'].elements['message']; objectValue = oField.value; deb = oField.selectionStart; fin = oField.selectionEnd; objectValueDeb = objectValue.substring( 0 , oField.selectionStart ); objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength ); objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd ); // alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")"); oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin; oField.selectionStart = strlen(objectValueDeb); oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]"); oField.focus(); oField.setSelectionRange( objectValueDeb.length + selec.length + 2, objectValueDeb.length + selec.length + 2); } else { // Si on est sur IE oField = document.forms['news'].elements['message']; var str = document.selection.createRange().text; if (str.length>0) { // Si on a selectionné du texte var sel = document.selection.createRange(); sel.text = "[" + selec + "]" + str + "[/" + selec + "]"; sel.collapse(); sel.select(); } else { oField.focus(oField.caretPos); // alert(oField.caretPos+"\n"+oField.value.length+"\n") oField.focus(oField.value.length); oField.caretPos = document.selection.createRange().duplicate(); var bidon = "%~%"; var orig = oField.value; oField.caretPos.text = bidon; var i = oField.value.search(bidon); oField.value = orig.substr(0,i) + "" + orig.substr(i, oField.value.length); var r = 0; for(n = 0; n < i; n++) {if(regexp.test(oField.value.substr(n,2)) == true){r++;}}; pos = i + 2 + selec.length - r; //placer(document.forms['news'].elements['message'], pos); var r = oField.createTextRange(); r.moveStart('character', pos); r.collapse(); r.select(); } } } </script>
ensuite j'ai créé un bouton pour mettre en gras, en souligné, en couleur,et en italique:
puis j'ai fais le formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <input type="button" value="b" style="width:50px;font-weight:bold" onclick="storeCaret('b')"> <input type="button" value="i" style="width:50px;font-style:italic" onclick="storeCaret('i')"> <input type="button" value="u" style="width:50px;text-decoration:underline" onclick="storeCaret('u')"> <input type="button" value="Couleur" onclick="storeCaret('color=(red|green|blue|yellow|purple|olive)')"> Choisi ta couleurs <br>
dans la page ou on recoit le $_POST['message'] j'ai les regex suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <input type="text" name="titre"> Message :<br> <textarea name="message" id="message" wrap="virtual" cols="100" rows="15"> </textarea> </center> <input type="submit" name="Submit" value="Envoyer">
Code : PHP - Afficher / masquer les numéros de ligne
ce qui ne va pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <? if(!empty($titre) && !empty($message)) { $titre = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $titre); $titre = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $titre); $titre = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color=(red|green|blue|yellow|purple|olive)\]#isU', '<span style="color:$1">$2</span>', $titre); $titre = preg_replace('#<a href="http://[a-z0-9._/-]+#i" target="_blank">http://[a-z0-9._/-]+#i</a>', '<a href="$0">$0</a>', $titre); $message = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $message); $message = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $message); $message = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color=(red|green|blue|yellow|purple|olive)\]#isU', '<span style="color:$1">$2</span>', $message); $message = preg_replace('#<a href="http://[a-z0-9._/-]+#i" target="_blank">http://[a-z0-9._/-]+#i</a>', '<a href="$0">$0</a>', $message);
quand je clique sur le bouton "gras" les balises apparaissent et fonctionnent
(je dois inserer du texte entre les deux balises apparaissant )
mais quand je clique sur u(pour souligner) les balises apparaissent mais ne fonctionnent pas (en mettant du texte entre les balises, rien n'est souligné,les balises ne sont pas traduites)
de meme pour les couleurs:les balises apparaissent mais ne fonctionnent pas...
alors que pour mettre en italique,ca fonctionne...les balises apparaissent et fonctionnent....
vous savez pourquoi? merci
Partager