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:

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>
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...

Tenendo conto che mi occorre per una intranet equipaggiata con IE6, avete qualcosa da suggerirmi?

ciao