Foros del Web » Programando para Internet » Javascript »

Anular entrada de teclado y retornar cursor

Estas en el tema de Anular entrada de teclado y retornar cursor en el foro de Javascript en Foros del Web. Hola a todos!! es la primera que envio una pregunta por este medio, he revisado varios foros para ver si encontraba lo que necesito pero ...
  #1 (permalink)  
Antiguo 02/05/2007, 10:14
 
Fecha de Ingreso: mayo-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Anular entrada de teclado y retornar cursor

Hola a todos!! es la primera que envio una pregunta por este medio, he revisado varios foros para ver si encontraba lo que necesito pero aqui va:

Tengo un edit que debe tener un formato: ____/__, al presionar una tecla valido que sea un número o un '/', y necesito que se borre una parte del formato anteriormente mostrado, esto lo hago asi:

Javascript:
function tecla(evt)
{
var num = document.forma.text.value
var lon, i, pos, cad="", aux, cadena
var evto = (evt) ? evt : event
var charCode = (evto.charCode) ? evto.charCode : evto.keyCode

if(charCode >= 47 && charCode <= 57)
{ tecla = String.fromCharCode(charCode)
lon = num.length
if(lon>=7 && charCode!=47)
{ pos = num.indexOf("_")
cad = tecla
if(pos!=0)
{ aux = num.substr(0,pos)
cad = aux + cad
}
aux = num.substr(pos+1,lon)
cadena = cad+aux
document.forma.text.value = cadena
window.event.keyCode = 0 //*
}
}
}


Formulario:
<form name="forma" method="post">
<input type="text" value="____/__" name="text" onkeypress="return tecla(event)" />
</form>

* Esta linea sirve en IE pero en firefox no, si alguien puede ayudarme con esto lo agradezco mucho
Tambine quisiera que al mostrar el nuevo texto, el cursor en el edit quede donde deba seguir escribiendo

Tambien he logrado validar con otro codigo que encontré en el foro:

function valid(e)
{
tecla = (document.all) ? e.keyCode : e.which;
if (tecla==8) return true
patron =/\d/
te = String.fromCharCode(tecla)
return patron.test(te)
}

He intentado agregarle algo (le he agregado el codigo anterior) que pueda modificar el contenido y mostrar con el formato pero no lo consigo
Si alguien puede ayudarme lo agradezco de antemano.-
  #2 (permalink)  
Antiguo 02/05/2007, 14:24
Avatar de 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.
  #3 (permalink)  
Antiguo 03/05/2007, 08:37
 
Fecha de Ingreso: mayo-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Sonrisa Re: Anular entrada de teclado y retornar cursor

Muchas gracias por tu ayuda, en este momento voy a probar y adaptarlo a lo que necesito... Que estes bien
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:11.