Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/05/2007, 14:24
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Anular entrada de teclado y retornar cursor

Quizás te puedas inspirar en un código que hice para otra persona en este foro; es una máscara para insertar una hora en un campo de texto, y además es validada al instante que se inserta un caracter:

Código PHP:
<input type="text" id="caja" />

<
script>

var 
laCaja=document.getElementById("caja");
var 
valor="";
var 
mascaraDef="HH:MM";


// sustituirá la mascara en el campo por lo que se vaya escribiendo
function ponMascara(valueActual,mascaraTotal) {
    var 
mascara=mascaraTotal.substringvalueActual.lengthmascaraTotal.length );
    
laCaja.value=valueActual+mascara;
}

// devuelve true en caso de que el caracter sea válido en esa posición pos para un formato HH:MM 24h
function esValidoHHMM(c,pos) {
    if( 
pos==)                // primer caracter de las horas (entre 0 y 2)
        
return /^[0-2]$/.test(c);
    else if( 
pos==)            // segundo caracter de las horas (depende del primero)
        
return /^([0-1][0-9])|(2[0-3])$/.test(valor+c);
    else if( 
pos==|| pos==)    // primer caracter de los minutos (entre 0 y 5)
        
return /^[0-5]$/.test(c);
    else if( 
pos==)             // segundo caracter de los minutos (entre 0 y 9)
        
return /^[0-9]$/.test(c);
    else                        
// cualquier otro caso
        
return false;
}

// el evento de pulsación de tecla para la caja laCaja
laCaja.onkeypress=function(e){
    var 
code;
    if (!
e) var window.event;
    if (
e.keyCodecode e.keyCode;            // detectamos el codigo de la tecla
    
else if (e.whichcode e.which;
    var 
caracter String.fromCharCode(code);    // extraemos su caracter
    
if (code==8) {        //controlamos el caracter backspace para borrar números de la caja
        // borramos un caracter de valor, y si hay un ":" borramos dos
        
if(valor.length==3)        //hay colocado HH:
            
valor=valor.substring(0,1);        //dejamos H
        
else if(valor.length>0)    //si hay algo que borrar, lo borraremos
            
valor=valor.substring(0,valor.length-1);
        
ponMascara(valor,mascaraDef);
    }
    else if( 
esValidoHHMM(caractervalor.length+1) ) {        // si es un número válido en el contexto, lo añadiremos
        
if(valor.length==2)
            
valor+=":";
        if(
valor.length<mascaraDef.length)
            
valor+=caracter;
        
ponMascara(valor,mascaraDef);
    }
    else 
        
alert("El carácter escrito en el campo no es válido");
    return 
false;        //nunca aceptaremos que el evento continúe, controlaremos el value siempre nosotros
}

ponMascara("",mascaraDef);



</script> 

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.