Questo codice formatta il testo nel textarea, in FF funziona tutto bene, con IE sballa la formattazione cioè: non la stampa in sequenza fai una prova: formatta un testo e poi formattane un'altro (sempre nello stesso textarea) e vedrai che con IE non stampa in sequenza e la cosa è visibile già da subito senza inviare il form http://photoman.altervista.org/guestbook/form.php
Codice HTML:
//Formatta il testo con B, I, U e Color
function insert_tag(codice,argomento2){
var tarea=document.forms.mioform.messaggio;
tarea.focus();
if(document.selection){ //--------> IE
var selezionato=document.selection;
var rng=selezionato.createRange();
if(rng!=null && (selezionato.type=='Text' || selezionato.type=='None')){
messaggio_trg=rng.text;
}
if(rng!=null && tarea.createTextRange){
tarea.caretPos=rng.duplicate();
}
var caretPos=tarea.caretPos;
if(argomento2){ // --------> colore
caretPos.text='['+codice+'='+argomento2+']'+messaggio_trg+'[/'+codice+']';
}
else{
caretPos.text='['+codice+']'+messaggio_trg+'[/'+codice+']';
}
}
else if(tarea.selectionStart || tarea.selectionStart=='0'){ //-------- > FF
if(tarea.selectionStart!=tarea.selectionEnd){
var inizio_sel=tarea.selectionStart;
var fine_sel=tarea.selectionEnd;
var messaggio_trg=(tarea.value).substring(inizio_sel,fine_sel);
}
else{
var messaggio_out=prompt('Inserisci il testo da formattare','');
if(messaggio_out!=undefined && messaggio_out!=null && messaggio_out!=''){
messaggio_trg=messaggio_out;
}
else{
messaggio_trg='';
}
}
if(messaggio_trg!='' && messaggio_trg!=null){
var inizio_sel=tarea.selectionStart;
var fine_sel=tarea.selectionEnd;
var inizio=(tarea.value).substring(0,inizio_sel);
var fine=(tarea.value).substring(fine_sel,tarea.textLength);
if(argomento2){ //---------> colore
tarea.value=inizio+'['+codice+'='+argomento2+']'+messaggio_trg+'[/'+codice+']'+fine;
}
else{
tarea.value=inizio+'['+codice+']'+messaggio_trg+'[/'+codice+']'+fine;
}
}
}
else{ //--------> altri Browser
var messaggio_out=prompt('Inserisci il testo da formattare','');
if(messaggio_out!=undefined && messaggio_out!=null && messaggio_out!=''){
tarea.value+='['+codice+']'+messaggio_out+'[/'+codice+']';
}
else{
tarea.value+='';
}
}
tarea.focus();
}
e richiamo il tutto nel form:
Codice HTML:
<div id="bottoneB">
<a href="javascript:insert_tag('B');">B</a>
</div>
<div id="bottoneI">
<a href="javascript:insert_tag('I');">I</a>
</div>
<div id="bottoneU">
<a href="javascript:insert_tag('U');">U</a>
</div>
<select class="campoColori1" onchange="insert_tag('COLOR',this.options[this.selectedIndex].value);this.selectedIndex=0;">
<option value="COLOR">Colore</option>
<option value="blue" class="turchese-color">blue</option>
<option value="red" class="rosso-color">red</option>
<option value="green" class="verde-color">green</option>
<option value="gray" class="grigio-color">gray</option>
<option value="black" class="nero-color">black</option>
</select>