Ciao a tutti stò usando uno script preso da html.it per la realizzazione di un piccolo editor per il form, sotto IE mi funziona tutto correttamente , con Firefox, quando va a inserire i campi tipo , praticamente il cursore non compare più nel form quindi bisogna cliccare con il mouse al centro per poter scrivere, mentre in IE funziona tutto in automatico, il cursore compare dove deve stare, vi posto il codice IE poi quello Firefox:
codice:
// Se Il browser è InternetExplorer
oField = document.forms['news'].elements['newst'];
var str = document.selection.createRange().text;
if (str.length>0)
{
// Se si è selezionato del testo
var sel = document.selection.createRange();
sel.text = "<" + selec + ">" + str + "</" + selec + ">";
sel.collapse();
sel.select();
}
else
{
// Se non si è selezionato alcun testo
oField.focus(oField.caretPos);
//alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();
var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "<" + selec + "></" + selec + ">" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['newst'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
Il codice Firefox è :
codice:
// Se il browser è Mozilla
oField = document.forms['news'].elements['newst'];
objectValue = oField.value;
deb = oField.selectionStart;
fin = oField.selectionEnd;
objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );
oField.value = objectValueDeb + "<" + selec + ">" + objectSelected + "</" + selec + ">" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "<" + selec + ">" + objectSelected + "</" + selec + ">");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
Grazie per l'aiuto!