Foros del Web » Programando para Internet » Javascript »

Quitar foco luego de pulsar una tecla

Estas en el tema de Quitar foco luego de pulsar una tecla en el foro de Javascript en Foros del Web. Buenas noches: Tengo este problema. Este código lo uso para que en un campo se pueda ingresa únicamente números del 1 al 6, pero cuando ...
  #1 (permalink)  
Antiguo 15/12/2012, 23:46
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
Quitar foco luego de pulsar una tecla

Buenas noches:
Tengo este problema. Este código lo uso para que en un campo se pueda ingresa únicamente números del 1 al 6, pero cuando se ingrese uno entre el 2 y 6 deberá de mostrar un mensaje. Funciona bien, sin embargo al ingresar un número me sigue manteniendo el foco y aunque el input esta configurado para que acepte sólo 1 carácter, si pulso otro número, entre el 2 y el 6 por ejemplo, salta el mensaje aún cuando en el campo se mantiene el valor de 1.

Cita:
<input type="text" name="descarte" id="descarte" size="2" maxlength="1" onKeyPress="return rango(event);">

..........

var nav4 = window.Event ? true : false; //Sólo números
function rango(evt)
{
// Backspace = 8, Enter = 13, '1' = 49, '6' = 54
var key = nav4 ? evt.which : evt.keyCode;
//return (key <= 13 || (key >= 48 && key <= 54));

if(key > 49 && key <=54)
{alert("hay que ingresar una observación");}

return (key <= 13 || (key >= 49 && key <= 54) || key == 40);
document.getElementById("descarte").blur();
}
El blur() no me funciona como deseo. Claro que si pongo esa línea antes del return funciona, pero no me permite ingresar ningún dato.

Lo que necesito es que una vez pulsada una de las teclas permitidas automáticamente se pierda el foco.

¿Que me sugieren?

Muchas gracias desde ya.
Un saludo desde Lima, Perú
  #2 (permalink)  
Antiguo 16/12/2012, 08:26
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Quitar foco luego de pulsar una tecla

con expresiones regulares es mas sencillo
Cita:
function rango(evt) {
var keyCode = (document.all) ? evt.keyCode : evt.which;
if(keyCode == 8) return;
if (!/[1-6]/.test(String.fromCharCode(keyCode))) {
{alert("hay que ingresar una observación");}
}
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 16/12/2012, 13:03
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
Respuesta: Quitar foco luego de pulsar una tecla

Gracias por la respuesta. Lamentablemente no funciona como lo necesito.

Lo que necesito es que cuando ingrese el número 1 NO pase nada y que luego de ingresar el 1 se pierda el foco o mejor aún se vaya al siguiente tabindex.

Pero si ingresa entre el 2 y el 6 entonces si se realice una acción (en mi ejemplo es un alert pero en la práctica es el llamado de una función)

Lamento no haberme explicado mejor previamente.

Un abrazo desde Lima, Perú
  #4 (permalink)  
Antiguo 16/12/2012, 17:16
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Quitar foco luego de pulsar una tecla

fijate asi
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Aceptar solo rango de números desde teclado</title>
  5. </head>
  6. <script type="text/javascript">
  7. //<![CDATA[
  8.  
  9. function verifica(campo){
  10. var elcampo = document.getElementById(campo);
  11. var valor = parseInt(elcampo.value);
  12.     if(valor == 1){
  13.     document.getElementById("otrocampo").focus();
  14.     return false;
  15.     }
  16.    
  17.     if(valor >= 2 && valor <= 6){
  18.     alert("hay que ingresar una observación");
  19.     document.getElementById("otrocampo").focus();
  20.     return false;
  21.     }
  22.  
  23. }
  24. function validar(e){
  25. var expresion=/[1-6\b]/;
  26. return expresion.test(String.fromCharCode(e.which));
  27. }
  28. //]]>
  29.  <input type="text" id="descarte" name="descarte" onkeypress="return validar(event)" onkeyup="verifica(this.id)" maxlength="1"/>
  30.  <input type="text"  id="otrocampo" />
  31. </body>
  32. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 17/12/2012, 07:19
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Quitar foco luego de pulsar una tecla

es prácticamente lo mismo
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es" xml:lang="es">
<head>
<title>Documento sin título</title>
<style type="text/css">
.seleccionado {background:#FF0000;}
.deseleccionado {background:#FFF;}
</style>
<script type="text/javascript">
function rango(evt, obj) {
var keyCode = (document.all) ? evt.keyCode : evt.which;
if(keyCode == 8) return;
if (/[1-6]/.test(String.fromCharCode(keyCode))) {
if(keyCode == 49) {
obj.nextElementSibling.focus();
} else {
alert("hay que ingresar una observación");
}
}
}
</script>
</head>
<body>
<form>
<input type="text" name="descarte" id="descarte" size="2" maxlength="1" onkeyup="return rango(event, this);">
<input type="text" name="des" id="des">
</form>
</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #6 (permalink)  
Antiguo 17/12/2012, 18:56
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
Respuesta: Quitar foco luego de pulsar una tecla

Muchas gracias a ambos por sus respuestas. Lamentablemente sigue sin funcionar, pues me permite el ingreso de 1 valor (entre 1 y 6) y ejecuta la acción cuando es entre 2 y 6 PERO no pierde el foco, se mantiene en el mismo campo siempre.

Utilizando el primer código, el de EMPREAR simplemente no aparece nada en el campo, mientras que con el 2do. código no pierde el foco, se mantiene siempre en el mismo campo.

Olvidé mencionar que lo estoy visualizando con IE a pedido del cliente (es su requerimiento que sea sólo para IE).

Gracias por el apoyo
  #7 (permalink)  
Antiguo 17/12/2012, 19:38
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Quitar foco luego de pulsar una tecla

Cita:
Iniciado por freesoftwarrior Ver Mensaje
Muchas gracias a ambos por sus respuestas. Lamentablemente sigue sin funcionar, pues me permite el ingreso de 1 valor (entre 1 y 6) y ejecuta la acción cuando es entre 2 y 6 PERO no pierde el foco, se mantiene en el mismo campo siempre.

Utilizando el primer código, el de EMPREAR simplemente no aparece nada en el campo, mientras que con el 2do. código no pierde el foco, se mantiene siempre en el mismo campo.

Olvidé mencionar que lo estoy visualizando con IE a pedido del cliente (es su requerimiento que sea sólo para IE).

Gracias por el apoyo
Yo la estoy viendo en FF, IE9 y Chrome y tras mostrar el alert cambia el foco al 2º campo, en el uno cambia el foco pero sin alert ¿no es eso lo que querías?
http://foros.emprear.com/javascript/1-6.html

Edito, ahora entiendo, no solo la ves en IE sino en IE8, porque ahi, ahora veo que no funciona.

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 17/12/2012, 19:48
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
Respuesta: Quitar foco luego de pulsar una tecla

Gracias por la respuesta. Estoy usando IE9
  #9 (permalink)  
Antiguo 17/12/2012, 20:21
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Quitar foco luego de pulsar una tecla

Cita:
Iniciado por freesoftwarrior Ver Mensaje
Gracias por la respuesta. Estoy usando IE9
Entonces te tendría que funcionar (bueno, si es que he entendido correctamente)
¿Probaste la demo?

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 18/12/2012, 08:07
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
Respuesta: Quitar foco luego de pulsar una tecla

Gracias por tu respuesta y apoyo. El asunto había estado en otra función que tenía incorporada para el campo memo. Eso evita que se realice la función correctamente (la que me sugeriste). Sin embargo la idea me quedó más clara y pude solucionar el problema.

Mil gracias a ambos por su apoyo

Un saludo desde Lima, Perú

Etiquetas: foco, funcion, input, pulsar, tecla
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 08:01.