Foros del Web » Programando para Internet » Javascript »

Tiempo... maldito tiempo.

Estas en el tema de Tiempo... maldito tiempo. en el foro de Javascript en Foros del Web. ¡ Hola foreros ! Modestia aparte, soy bueno para PHP pero en cuanto a JS... ¡AUXILIO POR FAVOR! Algo sencillo para ustedes: Resulta que tengo ...
  #1 (permalink)  
Antiguo 25/06/2009, 17:26
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 4 meses
Puntos: 11
Tiempo... maldito tiempo.

¡ Hola foreros !

Modestia aparte, soy bueno para PHP pero en cuanto a JS... ¡AUXILIO POR FAVOR!

Algo sencillo para ustedes: Resulta que tengo un INPUT en el cual se van a ingresar códigos de barras por medio de una "terminal". Cada código de barras tiene 7 dígitos y el lector de códigos de barra los lee y escribe en, digamos, 1/2 segundo. Entonces necesito que para evitar fraudes, detecte que cada tanda de 7 dígitos sí se leyó en ese tiempo puesto que no quiero que metan códigos manualmente y como manualmente se demorarían más en ingresarlos entonces eso es precisamente lo que deseo: que me filtre por tiempo y saque un mensaje como "ESTO NO LO LEYÓ EL ESCANER, POR FAVOR NO INGRESE EL CÓDIGO MANUALMENTE".

Fáaaaaaacil para ustedes y muchas gracias de antemano.
  #2 (permalink)  
Antiguo 25/06/2009, 18:01
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: Tiempo... maldito tiempo.

nunca he trabajado con lectura de codigo de barra mediante escaneo. pero de todos modos algo no me hace sentido. por supuesto, esto dependera del equipo que se utilice, es decir si es una computadora o algun otro equipo especializado para dicha aplicacion. pero si es una computadora el usuario tiene control total sobre el documento que tiene en el navegador. lo que quiero decir es, tu podras hacer lo que tu quieras pero el usuario puede cambiar los datos, no necesariamente introduciendolo directamente sino tambien a traves de javascript u otras aplicaciones como firebug.

como mucho, pienso que puedes hacer el campo en "solo lectura" (readonly) para que hace el usuario no lo cambie o introduzca mantualmente. pero en todo caso, y el mas importante, es validar la barra de codigo en el servidor. validacion de cualquier metodo, que tenga el formato apropiado y que dicha barra de codigo señale el producto correcto. nuevamente, debes hacerlo en el servidor.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 25/06/2009, 22:09
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 4 meses
Puntos: 11
Respuesta: Tiempo... maldito tiempo.

Cita:
Iniciado por zerokilled Ver Mensaje
nunca he trabajado con lectura de codigo de barra mediante escaneo. pero de todos modos algo no me hace sentido. por supuesto, esto dependera del equipo que se utilice, es decir si es una computadora o algun otro equipo especializado para dicha aplicacion. pero si es una computadora el usuario tiene control total sobre el documento que tiene en el navegador. lo que quiero decir es, tu podras hacer lo que tu quieras pero el usuario puede cambiar los datos, no necesariamente introduciendolo directamente sino tambien a traves de javascript u otras aplicaciones como firebug.

como mucho, pienso que puedes hacer el campo en "solo lectura" (readonly) para que hace el usuario no lo cambie o introduzca mantualmente. pero en todo caso, y el mas importante, es validar la barra de codigo en el servidor. validacion de cualquier metodo, que tenga el formato apropiado y que dicha barra de codigo señale el producto correcto. nuevamente, debes hacerlo en el servidor.
¿Será que enredé mucho la pita?
No se trata de equipos ni nada de eso, la idea es simple: Un INPUT que diga que si se introducen siete dígitos en más de un segundo me tire un mensaje como "USTED ES MUY LENTO Y LA LECTURA DE CÓDIGO ES MÁS RÁPIDA". Eso es todo.
  #4 (permalink)  
Antiguo 26/06/2009, 01:32
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Respuesta: Tiempo... maldito tiempo.

Hola,

No se como enlazarlo con tu lector de códigos de barras, pero el contador de tiempo podrías hacerlo así:

Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
timer()
{
var 
t=setTimeout("alert('1 segundo')",1000);
}
</script>
</head>

<body>
<form>
<input type="button" value="Start" onClick = "timer()">
</form>
</body>
</html> 
Si no es esto lo que buscas vuelve a postear y lo volvemos a mirar.
Saludos.
  #5 (permalink)  
Antiguo 26/06/2009, 10:09
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 4 meses
Puntos: 11
Respuesta: Tiempo... maldito tiempo.

¡ MIL GRACIAS CRUJIKOKI ! Ya empezamos con algo.

Tu código está muy bien pero yo lo quiero en un INPUT tipo TEXT que es donde se irán leyendo los códigos. Como no sé mucho JS entonces cambio lo que quiero con sintaxis explicativa.

<html>
<head>
<script type="text/javascript">
function timer()
{

//Si (if) se escriben 7 caracteres en el INPUT en más de 1 segundo entonces
//aparezca el mensaje (alert).


var t=setTimeout("alert('ESTO NO PARECE HABER SIDO LEIDO CON CODIGO DE BARRAS')",1000);
}

</script>
</head>

<body>
<form>
<input type="text" onClick = "timer()">
<input type="button" value="Enviar">
</form>
</body>
</html>


Gracias de antemano.
  #6 (permalink)  
Antiguo 30/06/2009, 01:50
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Respuesta: Tiempo... maldito tiempo.

Hola,

Siento el retraso. Una posible solución que se me ocurre sería lo siguiente:

Código PHP:
<html>
<
head>
<
script type="text/javascript">

function 
timeCount()
{
    
t=setTimeout("alert('ESTO NO PARECE HABER SIDO LEIDO CON CODIGO DE BARRAS')",1000);
}

function 
stopCount()
{
    
clearTimeout(t);
}

</script>
</head>

<body>
<form>
<input type="text" onFocus="timeCount()" onBlur="stopCount()">
<input type="button" value="Enviar">
</form>
</body>
</html> 
Como puedes ver, cuando la caja de texto tiene el foco, se inicia el contador de 1 segundo, pero cuando pierde el foco se para. Esti implementa lo que tu quieres, pero solo con la condición de que obtenga el foco y luego lo pierda antes de 1 segundo.

Seguramente hay otra solución mejor pero así sencillito solo se me ocurre esto...

Si quieres que nos miremos algo más complejo vuelve a psotear y veremos a ver que se puede hacer.

Saludos!
  #7 (permalink)  
Antiguo 06/07/2009, 14:23
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 4 meses
Puntos: 11
Respuesta: Tiempo... maldito tiempo.

Gracias enormes. Al fin lo resolví de la siguiente forma pero todo con tu ayuda:

<script type="text/javascript">

function borraor(){alert("ESTO NO FUE LEIDO CON CODIGO DE BARRAS");document.getElementById("barrita").value= "";}
function timeCount(){t=setTimeout("borraor()",700);}
function stopCount(){clearTimeout(t);}

function barras(campo){
var z = 0;
var primeraMitad = "";
var segundaMitad = "";
for(var i = 0; i < campo.value.length; i++){
z++;
if(z == 7){
z = 0;
if(campo.value.charAt(i + 1) != "/"){
i++;
primeraMitad = campo.value.substring(0, i) + "/";
if(i + 1 < campo.value.length){
segundaMitad = campo.value.substring(i);
}
campo.value = primeraMitad + segundaMitad;
primeraMitad = "";
segundaMitad = "";
}else{
i++;
}
}
}
if (z == 1) {timeCount();}
if (z == 6) {stopCount();}
}


Ten por seguro Karma positivo.
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 04:23.