Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/05/2007, 16:10
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 7 meses
Puntos: 45
Re: Colocar el cursor en una caja de texto en determinada posición

Sorry, ya lo he solucionado, quité codigo de las FAQ, pensaba que no tenía sentido quitarle y ponerle el mismo value al input. Hay que hacer el createRange() con el campo vacío, yo que sé por qué.


Bueno, ya se puede hacer:
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
html>
<
head>
<
title></title>
<
meta name="Author" content="derkeNuke">
</
head>

<
body>


<
input type="text" id="caja" value="0123456789" />
<
input type="button" value="pos(3)" onclick="ponCursorEnPos(3)" />
<
br/>

<
script>

//función para escribir DEBUG
function e(q,noBr) {
    
document.body.appendChilddocument.createTextNode(q) );
    if(!
noBrdocument.body.appendChilddocument.createElement("BR") );
}


var 
laCaja=document.getElementById("caja");

//da el foco a la caja colocando el cursor de inserción en la posición pos
function ponCursorEnPos(pos){ 
    if(
typeof document.selection != 'undefined' && document.selection){ 
        
e("ponCursorEnPos: Con IE coloco el cursor en la posición "+pos);
        var 
tex=laCaja.value;
        
laCaja.value=''
        
forzar_focus();
        var 
str document.selection.createRange(); 
        
laCaja.value=tex;
        
str.move("character"pos); 
        
str.moveEnd("character"0); 
        
str.select();
    }
    else if(
typeof laCaja.selectionStart != 'undefined'){ 
        
e("ponCursorEnPos: Con Firefox u otro coloco el cursor en la posición "+pos);
        
laCaja.setSelectionRange(pos,pos); 
        
forzar_focus();
    }


function 
focus_handler() {
    
e("focus_handler: he saltado por el evento focus()");
    
ponCursorEnPos(2);
    
//setTimeout("ponCursorEnPos(2)",1000);
    
return false;
}

//hace el focus sin saltar el evento onfocus, es decir, sin saltar focus_handler
function forzar_focus() {
    
e("Fuerzo el focus sin que salte el evento onfocus");
    
laCaja.onfocus=null;                            //quito
    
laCaja.focus();                                    //hago
    
setTimeout("laCaja.onfocus=focus_handler",1);    //pongo (retrasado para IE...)
}

laCaja.onfocus=focus_handler;

</script>

</body>
</html> 
Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.