Ho la necessita' di acquisire dati numerici da un lettore di barcode, ma operando in modo tale chi il dato pervenga al corretto campo ricevente a prescindere dall'oggetto che possiede il focus.
Poiche' il lettore fornisce i dati sull'interfaccia di tastiera e non e' possibile configurarlo in alcun modo, il metodo che ho escogitato per discernere la provenienza dei dati e' quello di monitorare la durata della pausa fra l'introduzione dei singoli caratteri... sperando che la velocita' di trasmissione dei dati da parte del lettore fosse distinguibile da quella fornita da "semplici" dita sulla tastiera.
Sono arrivato a creare questa pagina di prova:
Come si puo' notare ho ridotto fino ad un solo millesimo di secondo il tempo di pausa prima dell'intervento dello script che segnala che si sta digitando da tastiera... ma questo intervallo non e' sufficiente se l'utente tiene premuto un tasto scatenando la ripetizione automatica...codice:<script> var car = ""; var tempo = undefined; var fuoco; function parte() { p = document.myForm.pistola; tasto = event.keyCode if (tasto>=48 && tasto<=57 && fuoco!=p && !event.shiftKey) { if(tempo) { p.focus(); clearTimeout(tempo); tempo = undefined; p.value += car; // return true; } else { car = String.fromCharCode(tasto) event.keyCode = 0; event.cancelBubble = true; event.returnValue = false; tempo = setTimeout("ferma()",1); } } } function ferma() { if (fuoco) fuoco.value += car; tempo = undefined; } </script> <body onkeydown="parte()"> <form name=myForm> <input type=text name=AltroCampo0 onfocus="fuoco=this;" onblur="fuoco=undefined;"> <input type=text name=AltroCampo1 onfocus="fuoco=this;" onblur="fuoco=undefined;"> Barcode: <input type=text name=pistola onfocus="fuoco=this;" onblur="fuoco=undefined;"> </form> </body>![]()
Tenendo conto che mi occorre per una intranet equipaggiata con IE6, avete qualcosa da suggerirmi?
ciao