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:
Il codice 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(); }
Grazie per l'aiuto!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); }

Rispondi quotando