changement de couleur de police par menu déroulant

changement de couleur de police par menu déroulant - HTML/CSS - Programmation

Marsh Posté le 03-03-2006 à 17:15:33    

Bon alors voilà...Je ne sais pas programmer en javascript, tout juste raccommoder ce qui existe déjà... Mon but est de faire qqch qui insère des BBcodes dans un textarea, j'ai trouvé un script qui marche bien (je les accommodé pour les smileys, la mise en gras, italique, l'insertion d'url...). Mais il me reste le problème de permettre le changement de couleur de la police à partir d'un menu déroulant, et je n'y parviens pas. Voici donc le script utilisé :
 

Code :
  1. var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
  2. var regexp = new RegExp("[\r]","gi" );
  3. function storeCaret(selec)
  4. {
  5. if (isMozilla)
  6. {
  7. // Si on est sur Mozilla
  8.  oField = document.forms['news'].elements['newst'];
  9.  objectValue = oField.value;
  10.  deb = oField.selectionStart;
  11.  fin = oField.selectionEnd;
  12.  objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
  13.  objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
  14.  objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );
  15. // alert("Debut:'"+objectValueDeb+"' ("+deb+" )\nFin:'"+objectValueFin+"' ("+fin+" )\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+" )" );
  16.  oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
  17.  oField.selectionStart = strlen(objectValueDeb);
  18.  oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" );
  19.  oField.focus();
  20.  oField.setSelectionRange(
  21.   objectValueDeb.length + selec.length + 2,
  22.   objectValueDeb.length + selec.length + 2);
  23. }
  24. else
  25. {
  26. // Si on est sur IE
  27.  oField = document.forms['news'].elements['newst'];
  28.  var str = document.selection.createRange().text;
  29.  if (str.length>0)
  30.  {
  31.  // Si on a selectionné du texte
  32.   var sel = document.selection.createRange();
  33.   sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
  34.   sel.collapse();
  35.   sel.select();
  36.  }
  37.  else
  38.  {
  39.   oField.focus(oField.caretPos);
  40.  // alert(oField.caretPos+"\n"+oField.value.length+"\n" )
  41.   oField.focus(oField.value.length);
  42.   oField.caretPos = document.selection.createRange().duplicate();
  43.   var bidon = "%~%";
  44.   var orig = oField.value;
  45.   oField.caretPos.text = bidon;
  46.   var i = oField.value.search(bidon);
  47.   oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
  48. //Partie modifiée
  49. //Gestion des retours chariots sous IE
  50. var temp = orig.substr(0,i);
  51. var nbretour =0;
  52. for (var cpt=0;cpt<temp.length;cpt=cpt+1)
  53. {
  54. if(temp.charAt(cpt)=="\n" )
  55. {
  56. nbretour=nbretour+1;
  57. }
  58. }
  59. //Prise en compte des retour chariots dans le placement du curseur
  60. pos = i + 2 + selec.length - nbretour;
  61.   //placer(document.forms['news'].elements['newst'], pos);
  62.   var r = oField.createTextRange();
  63.   r.moveStart('character', pos);
  64.   r.collapse();
  65.   r.select();
  66.  }
  67. }
  68. }


 
Et voilà mon formulaire :
 
 

Code :
  1. <?php
  2. echo '<form name=news action=plop.php><select name=color>';
  3. echo '<option>Changer de couleur</option>';
  4. echo '<option>Blanc</option>';
  5. echo '<option>Noir</option>';
  6. echo '</select>';
  7. echo '<textarea name="newst" id="newst" rows="10" wrap="off" cols="45" style="overflow:auto;"></textarea>';
  8. echo '<input type=submit value=envoyer></form>';
  9. ?>


 
Voilou ;) je serai reconnaissant à toute âme généreuse qui voudra bien me dire ce que je dois modifier dans le formulaire et le script pour que ca fonctionne. Merci d'avance ;)

Reply

Marsh Posté le 03-03-2006 à 17:15:33   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed