2012-04-27 30 views
6

tengo este problema con mi sitio web (MVC3, C#) y un lector de código de barras. En mi forma tengo algo como esto:Prevenir la ventana de descargas abiertas en Chrome con lector de código de barras

<ajax form....> 

<input type=text /> 

<div id=list> 
</div> 

</form> 

y la entrada se llena con un lector de código de barras y envía automáticamente la forma que con el Ajax, llena el div con el id = lista. Mi problema es que con Chrome y es decir, después de que se envía el texto, aparece una ventana de descargas en cromo y la ventana de favoritos aparece en es decir. Supongo que es porque el lector de código de barras inserta un [CR] [LF] en el texto y eso abre esas ventanas. Pensé que el lector de códigos de barras estaba insertando un ctrl-j en algún momento porque esa combinación abre la ventana de descargas en cromo y los favoritos en ie, pero con firefox la ventana de descargas no se abre (y también es ctrl-j).

No quiero decirle a mi cliente que configure el lector de código de barras para que mi página funcione, por lo que quiero una solución en javascript tal vez eso solucione ese problema.

gracias !!!

Respuesta

5

encontré el enlace this pero la única solución era cambiar el carácter predeterminado de su escáner ... no estoy seguro de poder cambiar el mío, así que, como usted, también estaría buscando una solución relacionada con el navegador. tal vez javascript Trataré de manejar los personajes con javascript para evitar que eso suceda ... si tengo éxito voy a tratar de recordar volver aquí y decirte hehehehehe

Creo que esto resuelve el problema ....

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74){ 
      e.preventDefault(); 
     }else{ 
      console.log(e.which); 
     } 
    }) 
}); 

déjame saber si sus obras para usted también .. asegúrese de vaciar la caché también ...

+0

Mi código de barras contienen '-' cuales código clave es 173 y el modo de pantalla dividida en una sola columna, gracias @Felipe Almeida – Tiger

+1

También bloquea los comandos de copiar y pegar He agregado pequeño arreglo a la misma y un viaje de solo bloque ctrl + j var prevKey = ''; \t \t $ ("entrada"). Keydown (function (e) { \t \t si (e.which == 74 && prevKey == '17') { \t \t console.log ('Ctrl + j occered'); \t \t e.preventDefault(); \t \t} \t \t \t si (e.which == 17) { \t \t \t prevKey = 17; \t \t} else { \t \t \t prevKey = ''; \t \t} \t \t \t}); –

0

Mi escáner (Intermec SR30) está configurado para aplicar 3 caracteres de nueva línea después de que el código de barras . Encontré esto abriendo Vim, inserto y luego escaneé el código de barras. Entonces cat'ed desde el archivo en -ax:

0000000 3 1 2 2 1 0 9 9 9 4 8 5 2 8 nl nl 
     3133 3232 3031 3939 3439 3538 3832 0a0a 
0000020 nl 
      000a 
0000021 

que pueden atrapar los años nl con:

$(document).ready(function(){ 
    $("#barcode").keypress(function(e){ 
     console.log('"' + e.keyCode + '"\n'); 
     if(e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 

pero el evento descarga-ventana abierta (Ctrl + j desde el teclado) es sorbido por el navegador antes de que llegue a la página abierta. Este problema también afecta a Firefox 30.0.

1

este código funciona para mí

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74 || e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 
0

El código de la respuesta aprobados está bloqueando teclas CTRL y J. Esto bloquearía única CTRL + J

$("#barcode").keypress(function(event){ 
    if(event.keyCode == 74 && event.ctrlKey){ 
     event.preventDefault(); 
    } 
}); 
0

Este código de abajo no va a funcionar. Porque si el valor del código de barras tiene el carácter 'J', no podrá obtener el resultado correcto. Intentamos agregar el control e.ctrlkey, pero esta vez, solo se recuperará un carácter del código de barras. La solución a través de js parece ser difícil. Tal vez la mejor opción es cambiar la configuración del escáner.

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74 || e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 
0

Esto funciona para mí.

<script> 
    document.addEventListener('keydown', function(event) { 
    if(event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74) 
     event.preventDefault(); 
    }); 
</script> 
Cuestiones relacionadas