Validar campos

Tengo este script para deshabilitar la tecla F5 y la de retroceso; pero también debo hacer lo siguiente:
Tengo 4 campos de text; para buscar solicitante y codeudores; la idea es que cuando presionen F7 abra una ventana con sus datos y puedan modificar o F4 otra ventana; eso aplica para los 4 campos de textos; lo hago bien pero solo con el del solicitante pero no he podido con los otros.
Segundo tengo desactivado la tecla de retroceso para que no vayan a la página de atrás, pero cuando dígito texto no borra hacia la izquierda.
Este es el script que utilizo.
Agradezco la ayuda que me puedas brindar.
<script>
function detectKey() {
if(window.event && window.event.keyCode == 116){
window.event.keyCode = 505;
}
else if(window.event && window.event.keyCode == 8){
window.event.keyCode = 505;
}
else if(form1.txtCedula.value != '' && (window.event && window.event.keyCode == 118)){
nueva_ventana('Datos_Laborales.php?doc='+form1.txt Cedula.value,'380','330','0');
}
if(window.event && window.event.keyCode == 505){
return false;
}
}
document.onkeydown = detectKey;
</script>
1

1 Respuesta

106.550 pts. Trabajo en desarrollo web en general, html, css, etc
La función seria algo así:
function detectKeyOnInput(valor) {
if(window.event && window.event.keyCode == 116){
window.event.keyCode = 505;
}
else if(window.event && window.event.keyCode == 8){
window.event.keyCode = 505;
}
else if(valor != '' && (window.event && window.event.keyCode == 118)){
// Aqui puedes abrir una u otra sengun el parametro...
nueva_ventana('Datos_Laborales.php?doc='+form1.txt Cedula.value,'380','330','0');
}
if(window.event && window.event.keyCode == 505){
return false;
}
}
Y desde el input se llamaria, por ejemplo asi:
<input type="text" name="LOQUESEA" value="LOQUESEA" onChange="detectKeyOnInput(this.value)">
Puedes cambiar el onchange por lo que quieras.
Saludos.
No me sale, le puse un alert a ver si entra a la función pero nada; sin embargo cuando cierro la ventana si sale el alert.
Ni con onBlur sale.
Lo coloque con OnKeyDown pero por cada tecla que presione me ejecuta el script poniéndolo más lento.
Ademas necesito inhabilitar del todo el F5.
¿Qué puede estar sucediendo?
¿Cuál es el problema exactamente? El script parece correcto (si es que hace lo que quieres), de modo que tal vez el problame este en como se llama a ese método...
¿Puedes enviarme el código completo de la página o una dirección donde verla?
Saludos.
Es una página php de 1200 lineas de codigo; no hay problemas pero como te comentaba: tengo 4 text; uno para el solicitante, si esta parado en ese text al darle la tecla F7 debe abrir una ventana nueva como puedes ver en el código que es txtcedula; pero cuando es cualquiera de los 3 codeudores; se llaman txtCod1, txtCod2, txtCod3 no lo hace pues esta amarrado a form1.txtCedula.value; quisiera saber si hay forma de que al posicionarse en cualquiera de esos campos mandar el valor a la nueva ventana.
Lo otro es que como esta desactivado la tecla de retroceso para evitar que vaya a la página de atras; no puedo borrar cuando estoy en cajón de text; como haría para que cuando este en un cajón de texto no me deshabilite la barra de retroceso.
Espero haberme explicado mejor.
Agradezco la ayuda que me puedas brindar.
Para lo primero igual lo mejor es que la llamada a la función se haga en un onKeyPressed de cada input no de todo el documento.
Es decir, puedes tener una función para cada input y que se llame como haces ahora, pero cambiando el:
nueva_ventana('Datos_Laborales.php?doc='+form1.txt Cedula.value,'380','330','0');
para que coja el de cada input, o puedes pasarle por parametro al metodo el value:
form1.txt Cedula.value
A tratar en cada caso a una única función.
Es decir, el trozo:
else if(form1.txtCedula.value != '' && (window.event && window.event.keyCode == 118)){
nueva_ventana('Datos_Laborales.php?doc='+form1.txt Cedula.value,'380','330','0');
}
Lo quitaría del método general ese que te controla los keys y entraría en esa(s) nueva(s) función(es).
Para lo segundo, lo que puedes hacer es poner un botón de borrar, donde pongas el value de ese input a vacío "". O puedes hacer que se borre en el onblur, por ejemplo.
Hay varias opciones.
Espero haberme explicado bien, sigue preguntando si necesitas algo más, ¿ok?
Hola.
¿Cómo mando el valor del input?
Me puedes escribir el código que utilizarías, es que intente hacerlo pero me salieron errores...
Saludos.
Hola
Se demora un poquito pero lo hace lo único que me dejo aburrido es que no he podido deshabilitar la barra de retroceso para que no vaya a la página de atrás.
Deshabilito F5 y llamo a las ventanas pero lo del retroceso no he podido hacerlo como quiero; que si estoy en un cajón de texto si me deje borrar es contenido con la barra de retroceso.
¿Tienes algún consejo de como lograr eso?
Saludos
Tal vez haya algún conflicto entre este método y el del onkeydown del document...
¿No te sale ningún error? ¿Simplemente no lo hace?
Es raro, porque son eventos diferentes...
¿No puedes darme una dirección donde verlo?
Si tienes capturada la tecla de borrar, lo que deberías hacer es incluir el caso excepcional en el que se el dé a la misma para borrar el contenido de un campo de texto.
Tal vez puedas poner un flag, un booleano, que te indique que ha habido un focus en alguno de los campos de texto. En el onFocus de los input pones ese booleano a true y en el onBlur lo pones a false. En el método miras ese booleano y en caso de que sea true, lo dejas pasar, porque es que quiere borrar algo. Si es false significa que no están borrando nada y lo cortas.
Hola
Entendí eso del boolean, ¿pero tengo que mandar ese valor boolean a la función que bloqueo las teclas?
¿O en que parte se valida eso?
Saludos.
Saludos.
Aun no me sale; no entiendo lo que quieres decir, ademas me sale error.
¿Me puedes dar explicar con un ejemplo más detallado?
¿O cierro la pregunta?
Perdona la tardanza...
No, el boolean es un flag, esta declarado y definido fuera de un método, así que es accesible desde cualquier método.
boolean focusado = false;
en el onfocus de los input lo pones a true y en el onblur a false.
En el metodo de borrado, miras si focusado == true:
if (focusado){
//dejas borrar
}else{
//lo que haga ahora
}
Prueba con algo así:
var focusado = false;
Esto fuera de todo método, por ejemplo, debajo de la etiqueta "script".
En los input pones:
onFocus="focusado=true" onBlur="focusado=false"
De modo que si esa variable es true, significa que el foco en un campo de texto, donde quieres que no se corte el botón de borrado.
Así pues, en tu método donde cortas la tecla de borrado pones:
if (focusado){
//dejas borrar, no haces nada
}else{
//lo que haga ahora
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas