Originariamente inviato da lionell88
il tuo focus va sempre alla fine della textarea. Il mio problema è quello di fare l'inserimento di una parola cliccando ad esempio su un bottone. Se io non faccio come ho postato sopra, questa parola mi viene aggiunta sempre alla fine.Invece deve aggiungerla proprio dove il cursore è posizionato.L'unica cosa che con capisco di quella funzione che ho postato è come correggere il fatto che il cursore poi si mette sempre a sinistra della parola appena inserita.
O tu hai capito il mio problema ma sono io che non capisco i tuoi aiuti o sono io che non mi sto spiegando bene sin dall'inizio!
Stai parlando di bottoni non di testo, io per i bottoni uso questo:
codice:
//Formatta il testo con B, I, U e Color
function insert_tag(codice,colore){
var tarea=document.forms.mioform1.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(colore){ //--------> colore
caretPos.text='['+codice+'='+colore+']'+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(colore){ //---------> colore
tarea.value=inizio+'['+codice+'='+colore+']'+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+='['+codice+'][/'+codice+']';
}
}
tarea.focus();
}