Soucis avec mon script de news - en javascript (dsl si ça y est 3 fois)

salut ! j’ai fait un script de news en html/css que j’envoie a l’aide d’un formulaire et qui est récéptionné sur la page d’apres
voila le formulaire


<script language="JavaScript">
 
 
 
function InstaSmilie ()
{
return;
}
function AddSmile(SmileCode)
{
var SmileCode;
var newPost;
var oldPost = document.form_add.news.value;
newPost = oldPost+SmileCode;
document.form_add.news.value=newPost;
document.form_add.news.focus();
return;
}
 
function sequence(SmileCode) {  AddSmile(SmileCode); InstallSmilie(); }
function previ(){
document.form_add.action='prev.php';
document.form_add.submit();
}
function valider(){
document.form_add.action='add.php';
document.form_add.submit();
}

Mon formulaire en lui meme

<form method="post" name="form_add">
 
     <legend>Ajout d'une news</legend>
    
    	<table>      
       <tr>
      <td width="40"><label>Titre</label></td>
      <td width="183"><input type="text" name="titre" size="60"
      <?php if (isset($_POST['titre']))	{echo 'value="' . stripslashes($_POST['titre']) . '"'; }?> /></td>    	
       </tr>
    	</table>
    	
       <table>
        <tr>
      <td width="40">
      <select>
      	<option value="gras" onClick="sequence('<b></b>');">Gras</option>
      	<option value="ital" onClick="sequence('<em></em>');">Italique</option>
      	<option value="soul" onClick="sequence('<u></u>');">Souligné</option>      	
      </select>
      </td>
      <td width="119">
      <select>
      	<option value="gauche" onClick="AddSmile('<p align=\'left\'></p>');">A Gauche</option>
      	<option value="droite" onClick="AddSmile('<p align=\'right\'></p>');">A Droite</option>
      	<option value="centre" onClick="AddSmile('<p align=\'center\'></p>');">Au Centre</option>
      </select>
      </td>
      <td width="119">
      <select>
      	<option value="8px" onClick="AddSmile('<span class=\'huit\'></span>');">8px</option>
      	<option value="10px" onClick="AddSmile('<span class=\'dix\'></span>');">10px</option>
      	<option value="12px" onClick="AddSmile('<span class=\'douze\'></span>');">12px</option>
      	<option value="14px" onClick="AddSmile('<span class=\'quatorze\'></span>');">14px</option>
      	<option value="16px" onClick="AddSmile('<span class=\'seize\'></span>');">16px</option>
      </select>
      </td>
        	
       </tr>
        <tr>
      
      <td width="119">
      <select>
      	<option value="lien" onClick="AddSmile('<a href=\'Le lien ici\'>Le titre du lien ici</a>');"  
      	>Lien dans la même fenetre</option>
      	<option value="lien2" onClick="AddSmile('<a target=\'_blank\' href=\'Le lien ici\'>Le titre du lien ici</a>');"  
      	>Lien dans une autre fenetre</option>      	
      </select>
      </td>  	
      <td width="119">
      <select>
      	<option value="orange" onClick="AddSmile('<span class=\'lettreOrange\'></span>');"  
      	>Orange</option>
      	<option value="saut" onClick="AddSmile('<br />');"  
      	>Saut de ligne</option>      	
      </select>
      </td>  	
            
       </tr>
       
       
       <tr>
       <td colspan="5">
       <?php 
       if (isset($_POST['news']))
       {
        ?>
      <textarea rows="10" cols="50" name="news"><?php echo stripslashes($_POST['news']);?></textarea>
      <?php
       }
       else
       {
       ?>
       <textarea rows="10" cols="50" name="news"></textarea>
       <?php
       }
       ?>
       
       </td>
       </tr>
       
       </table>
        
      <table>
      
        <tr>
      <td colspan="2" align="center"><input type="submit" value="Ajouter" onClick="valider()" id="btn"/> 
        </td>
        
        <td colspan="2" align="center"><input type="submit" value="Prévisualiser" onClick="previ()" id="btn"/> 
        </td>
       </tr>  
    	
    	</table>  	
 
  </form>

Mon probleme est que lorsque je veux mettre en forme ma news, en gras, italique …, ca ne marche pas sous IE 7 mais sous firefox oui.

Comment résoudre celà ?

Merci davance

Pourquoi le poster 3 fois !!!???

y a eu un bug : il me disait impossible d’ajouter dans la bse alors je revenais en arriere et retestais ! et en fait çà l’ajoutait !
chui dsl !

Supprime les autres alors :slight_smile:

qqn a til une idée svp ??

On dirati une erreur java script: tu clique sur le bouton et l’action ne fait rien?
essaye de mettre des alert sur le contenu du champs “document.form_add.news.value;” dans la fonctio naddSmilie

essaye peut-être avec la syntaxe docuemnt.getElementsByName("news") o encore en passant par les tableaux forms et elements
document.forms[0].elements["news"].value

peut-être un peu de doc là dessus?
http://www.w3schools.com/htmldom/dom_obj_document.asp
http://en.wikipedia.org/wiki/JavaScript_syntax#Arrays

En premieur lieu : <?php echo stripslashes($_POST[‘news’]);?> t’aurais pas besoin de ça si ton serveur n’utilisais pas magic_quote_runtime. Sinon c’est htmlspecialchars qu’il faut utiliser :slight_smile: idem pour le titre.

En second lieu, pas besoin de changer l’action d’un formulaire pour faire la prévisualisation :

<input type="submit" name="visualiser" value="Visualiser" />
<input type="submit" name="poster" value="Envoyer le bousin!" />

C’est un appel

Et en php :

<?php
if (isset($_POST['visualiser'])) {
  preview(...);
} elseif (isset($_POST['poster'])) {
  poster(...);
}
?>

Et pour ton cas :

function sequence(SmileCode) {  AddSmile(SmileCode); InstallSmilie(); }

Essaye avec ça :

function sequence(SmileCode) {  AddSmile(SmileCode); /*InstallSmilie();*/ }

IE7 ne doit pas trouver la méthode, et Fx aussi d’ailleurs.

Oh!

Et je crois aussi, pour en finir, ton problème vient tout simplement du fait que IE ne doit pas gérer l’action onclick sur les éléments (<option />) de ta liste déroulante.

C’est pas un bug javascript, mais une (des nombreuses) fonctionnalité manquante.

Tu peux t’en sortir avec onchange :

<select onchange="sequence(this.value);">
 <option value="&lt;b&gt;&lt;/b&gt;">Gras</option>
 <option value="&lt;i&gt;&lt;/i&gt;">Italique</option>
 <option value="&lt;u&gt;&lt;/u&gt;">Souligné</option>
</select>

Ou virer la liste déroulante, et mettre des liens tout con à la place (donc : remplacer option par a, etc)

Et même il se pourrait que le javascript ne soit pas activé dans ton IE7…
ça parrait bête, mais c’est quand même à vérifier !