Foros del Web » Programando para Internet » Javascript »

teclado numérico en varios imputs

Estas en el tema de teclado numérico en varios imputs en el foro de Javascript en Foros del Web. bueno pues ando un poco liado haciendo un login, con teclado numérico pero actualmente ando algo estancado con lo que viene siendo el pad numérico ...
  #1 (permalink)  
Antiguo 26/11/2012, 12:03
 
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 11 meses
Puntos: 1
teclado numérico en varios imputs

bueno pues ando un poco liado haciendo un login, con teclado numérico pero actualmente ando algo estancado con lo que viene siendo el pad numérico y la introducción de los datos en varios inputs

este es el código que tengo (solo muestro el pad y el input, no tiene sentido que muestre el login)

Código:
<head>
<script language="Javascript" type="text/javascript">
function clave(numero) {
		document.formulario.campo.value += numero;
        document.formulario.campo.focus();
        return;
}
</script>
</head>
<body>
<center>
<form action="login.php" method="post" name="formulario">
<input type="text" name="campo" size="21"><br>
<input onclick="clave('1');" type="button" value="1" name="1">
<input onclick="clave('2');" type="button" value="2" name="2">
<input onclick="clave('3');" type="button" value="3" name="3"><br>
<input onclick="clave('4');" type="button" value="4" name="4">
<input onclick="clave('5');" type="button" value="5" name="5">
<input onclick="clave('6');" type="button" value="6" name="6"><br>
<input onclick="clave('7');" type="button" value="7" name="7">
<input onclick="clave('8');" type="button" value="8" name="8">
<input onclick="clave('9');" type="button" value="9" name="9"><br>
<input type="reset" value="Borrar" name="borrar">
</form>
</center>
</body>
</html>
pues la cosa es que así, me introduce los datos en un input, pero si creo otro, me los duplica, y mi intención es que solo coloque los datos en el input que se encuentre seleccionado.

Gracias de ante mano.
  #2 (permalink)  
Antiguo 26/11/2012, 12:28
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: teclado numeri en vario imputs

buenas,
evidentemente no te va funcionar así. ¿conoces lo que es diseño modular? básicamente es separar cada cosa en componentes más pequeños y que sean reusables. generalmente, la reusabilidad se logra haciendo que ese componente sea genérico. es decir, que no está atado directamente sobre el componente que se aplica. en tu caso, la función clave siempre hace referencia al mismo campo. una posible solución podría ser enviar en otro parámetro el nombre del campo. luego en el cuerpo de la función haces referencia al campo utilizando ese parámetro.

Código:
function clave(numero, campo){
document.forms['formulario'].elements[campo].value = ... ;
...
}

<element onclick="clave('#', 'nombre_campo');" ... >
aunque se soluciona el problema, aún así se asume que los keypads deben estar dentro del form formulario. se puede seguir adaptando para hacerlo más genérico y reusable.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 27/11/2012, 04:28
 
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: teclado numeri en vario imputs

gracias, pero parece que soy demasiado novato en el javascript :/ y parece que no me entero mucho.

he intentado lo que me dices pero no si lo implemento mal o donde esta el problema, pero no me sale bien.

Cita:
<head>
<script language="Javascript" type="text/javascript">
function clave(numero, campo){
document.forms['formulario'].elements[campo].value += clave;
document.forms['formulario'].elements[numero].value += clave;
document.formulario.campo.focus();
return;
}
</script>
</head>
<body>
<center>
<form action="login.php" method="post" name="formulario">
<input onclick="clave('#', 'campo');"type="text" name="campo" size="21"><br>
<input onclick="clave('#', 'numero');"type="text" name="numero" size="21"><br>
<input onclick="clave('1');" type="button" value="1" name="1">
<input onclick="clave('2');" type="button" value="2" name="2">
<input onclick="clave('3');" type="button" value="3" name="3"><br>
<input onclick="clave('4');" type="button" value="4" name="4">
<input onclick="clave('5');" type="button" value="5" name="5">
<input onclick="clave('6');" type="button" value="6" name="6"><br>
<input onclick="clave('7');" type="button" value="7" name="7">
<input onclick="clave('8');" type="button" value="8" name="8">
<input onclick="clave('9');" type="button" value="9" name="9"><br>
<input type="reset" value="Borrar" name="borrar">
</form>
</center>
</body>
</html>
al seleccionar el campo me saca la función en el, en vez de dejarlo seleccionado, y solo funciona el botón de reset.
  #4 (permalink)  
Antiguo 27/11/2012, 06:25
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: teclado numeri en vario imputs

ya voy viendo como lo quieres hacer, un solo keypad para todos los campos. es normal cuando el campo pierde el foco al hacer click en uno de los botones. en este caso, para escribir en el campo activo, tendrías que almacenar en una variable la referencia del último campo que haya recibido foco. esto lo haces programando el evento onfocus de los campos y dentro del handler actualizar alguna variable global.

Código:
var lastfocus = null;
<element onfocus="lastfocus = this;">
luego en tu función clave utilizarías directamente la variable global para accesar el último campo que recibio focus.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 04/12/2012, 09:55
 
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: teclado numeri en vario imputs

buff gracias pero aun no lo he solucionado :S

lo del foco si no lo entendido mal, lo que debo hacer es poner en el prinero ese codigo que me pones <element onfocus="lastfocus = this;">, en el segundo no pondria nada. pero en el script ya me pierdo.. la variable lastfocus como la llamo ?

como verás no ando del todo muy ductil con el tema este, pero poco a poco se va aprendiendo mas. Y mas con gente como tu que ayuda ;)
  #6 (permalink)  
Antiguo 04/12/2012, 21:03
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: teclado numeri en vario imputs

Cita:
lo del foco si no lo entendido mal, lo que debo hacer es poner en el prinero ese codigo que me pones <element onfocus="lastfocus = this;">, en el segundo no pondria nada.
tienes que agregar el evento en todos los campos donde se va insertar lo marcado en el keypad.

Cita:
pero en el script ya me pierdo.. la variable lastfocus como la llamo ?
dentro de tu función utilizas esa variable como cualquier otra. solo que esa variable será la referencia del campo que tuvo el foco. es importante que primero pongas el foco sobre el campo que deseas escribir antes de marcar los números.
Código:
function ...{
...
lastfocus.value =  valor;
...
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 05/12/2012, 03:12
 
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: teclado numérico en varios imputs

por fin!! muchisimas gracias!

posteo el codigo para quien le haga falta usarlo en un futuro.

Cita:
<script language="Javascript" type="text/javascript">
function clave(numero) {
lastfocus.value += numero;
document.formulario.campo.focus();
return;
}
</script>
Los inputs:
Cita:
<input type="text" onfocus="lastfocus = this;" name="lo_que_quieras" size="15">
Y el pad:
Cita:
<table border="0" width="100%" cellspacing="1" cellpadding="0" height="100%">
<tr>
<td align="center" style="padding-right: 40px;"><table align="right">
<tr>
<td><input onclick="clave('7', 'campo');" type="button" value="7" name="7" id="boton" style="height: 40px; width: 40px"></td>
<td><input onclick="clave('8', 'campo');" type="button" value="8" name="8" id="boton" style="height: 40px; width: 40px"></td>
<td><input onclick="clave('9', 'campo');" type="button" value="9" name="9" id="boton" style="height: 40px; width: 40px"></td>
</tr>
<tr>
<td><input onclick="clave('4', 'campo');" type="button" value="4" name="4" id="boton" style="height: 40px; width: 40px"></td>
<td><input onclick="clave('5', 'campo');" type="button" value="5" name="5" id="boton" style="height: 40px; width: 40px"></td>
<td><input onclick="clave('6', 'campo');" type="button" value="6" name="6" id="boton" style="height: 40px; width: 40px"></td>
</tr>
<tr>
<td><input onclick="clave('1', 'campo');" type="button" value="1" name="1" id="boton" style="height: 40px; width: 40px"></td>
<td><input onclick="clave('2', 'campo');" type="button" value="2" name="2" id="boton" style="height: 40px; width: 40px"></td>
<td><input onclick="clave('3', 'campo');" type="button" value="3" name="3" id="boton" style="height: 40px; width: 40px"></td>
</tr>
<tr>
<td colspan="2"><input onclick="clave('0', 'campo');" type="button" value="0" name="0" id="boton0" style="height: 40px; width: 85px"></td>
<td>
<input type="reset" value="DEL" name="DEL" id="boton" style="height: 40px; width: 40px"></td>

</tr>
</table>
De nuevo gracias a esta comunidad! y sobre todo a zerokilled en especial por ayudarme en este script.

Etiquetas: formulario, html, imputs, input, php, teclado
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 03:59.