Como no podía ser de otra manera existen ciertas restricciones para que esto funcione en IE aunque yo me niego a bailarle el agua Microsoft. Prefiero que mis programas no funcionen en él a seguir sirviendo al monopolio. De todas formas para el que no le importe ayudar a MS IE dejo aqui unas funciones que haciendo uso de ellas solucionan el problema
Código javascript
:
Ver originalfunction posicionCursor()
{
var tb = document.getElementById("miCuadrodeTexto")
var cursor = -1;
// IE
if (document.selection && (document.selection != 'undefined'))
{
var _range = document.selection.createRange();
var contador = 0;
while (_range.move('character', -1))
contador++;
cursor = contador;
}
// FF
else if (tb.selectionStart >= 0)
cursor = tb.selectionStart;
return cursor;
}
function forzar_focus() {
// laCaja se refiere al input text
laCaja.onfocus=null; //quito
laCaja.focus(); //hago
setTimeout("laCaja.onfocus=focus_handler",1); //pongo (retrasado para IE...)
}
function ponCursorEnPos(pos){
// laCaja se refiere al input text
if(typeof document.selection != 'undefined' && document.selection){ //método IE
var tex=laCaja.value;
laCaja.value='';
forzar_focus(); //debería ser focus(), pero nos salta el evento y no queremos
var str = document.selection.createRange();
laCaja.value=tex;
str.move("character", pos);
str.moveEnd("character", 0);
str.select();
}
else if(typeof laCaja.selectionStart != 'undefined'){ //método estándar
laCaja.setSelectionRange(pos,pos);
forzar_focus(); //debería ser focus(), pero nos salta el evento y no queremos
}
}