Bonjour,
Tout d'abord je m'excuse de poser une question qui a, visiblement, été posté énormement de fois, mais je n'ai pas trouver ma réponse malgrés mes recherches, que ce soit dans le forum ou dans les faq.
Alors mon problème : Je veux faire un formulaire permettant de poster une news et, comme sur un forum par exemple, je veux y mettre des bouton facilitant la mise en forme du texte. Pour faire ça, j'ai récupérer une fonction existante.
Je poste tout d'abord mes pages :
La page avec le formulaire :
La fenetre input.php :
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 <script language="JavaScript" type="text/javascript"> function AddText(startTag,defaultText,endTag) { with(document.poster) { if (message.createTextRange) { var text; message.focus(message.caretPos); message.caretPos = document.selection.createRange().duplicate(); if(message.caretPos.text.length>0) { //gère les espace de fin de sélection. Un double-click sélectionne le mot //+ un espace qu'on ne souhaite pas forcément... var sel = message.caretPos.text; var fin = ''; while(sel.substring(sel.length-1, sel.length)==' ') { sel = sel.substring(0, sel.length-1) fin += ' '; } message.caretPos.text = startTag + sel + endTag + fin; } else message.caretPos.text = startTag+defaultText+endTag; } else message.value += startTag+defaultText+endTag; } } //Appel du popup function fenetre() { config='height=100, width=175,top=150, left=150, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no' window.open("input.php","Lien",config); } </script> <form action="" method="post" name="poster"> <table border="1"> <tr> <td>Titre de la news :</td> <td><input name="tf_newstitre" type="text" size="50" /></td> </tr> <tr> <td></td> <td> <table border="0"> <tr> <td><input name="btn_Gras" type="button" value="G" onclick="javascript:AddText('<b>','','</b>');" /></td> <td><input name="btn_Ital" type="button" value="I" onclick="javascript:AddText('<i>','','</i>');" /></td> <td><input name="btn_Under" type="button" value="S" onclick="javascript:AddText('<u>','','</u>');" /></td> <td><input name="btn_Pic" type="button" value="Image" onclick="javascript:fenetre();" /></td> <td><input name="btn_Link" type="button" value="Lien" onclick="" /></td> </tr> </table> </td> </tr> <tr> <td>Corps de la news :</td> <td><textarea name="message" wrap="virtual" cols="38" rows="10"></textarea></td> </tr> </table> </form>
Les boutons permettant l'ajout de balise 'gras', 'italique' et 'souligné' fonctionne sans soucis.
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 <?php if (isset($_POST['tf_lien'])) { ?> <script language="JavaScript" type="text/javascript"> window.opener.AddText('<a ref="', <?php echo $_POST['tf_lien'] ; ?>, '" targer=_blank />') ; window.self.close() ; </script> Fermez cette fenêtre si ca ne s'est pas fait automatiquement. <?php } ?> <form action="" method="post" name="f_lien"> <table border="0"> <tr> <td><div align="center">Entrer le lien ici :</div></td> </tr> <tr> <td><div align="center"><input name="tf_lien" type="text" /></div></td> </tr> <tr> <td><div align="center"><input name="submit_lien" type="submit" value="Valider"/></div></td> </tr> </table> </form>
L'appel du pop-up se fait également.
Dans le pop-up je rentre mon lien, je valide et là :
-> il ne se passe rien sur la fenetre principale
-> Le pop-up ne se ferme pas
Pour le fait qu'il ne se ferme pas, visiblement la cause en serai Firefox, mais à vrai dire, c'est secondaire dans le cas présent.
Le gros soucis c'est donc qu'il ne se passe rien dans le formulaire de la fenetre principale.
J'ai tester différente façon d'appeler ma fonction tel que :
Enfin, j'ai tester les différents schéma présenté lors des différentes recherches que j'ai faite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 window.opener.AddText('<a ref="', <?php echo $_POST['tf_lien'] ; ?>, '" targer=_blank />') ; // ou window.top.opener.AddText('<a ref="', <?php echo $_POST['tf_lien'] ; ?>, '" targer=_blank />') ;
Je me demande si ca ne réagi pas à cause d'une erreur dans la fonction 'AddText()' ou si l'appel de la fonction est foireux.
Merci à vous
Partager