Newsgroup: it.comp.lang.javascript
Titolo: Scanner barcode

Ciao a tutti
Problema: devo digitare una stringa in una textbox e premere invio, 
dopodiche' fare alcune operazioni. Il tutto senza usare form.
Il problema e' che non riesco a gestire gli eventi sulla textbox, ovvero 
  onClick mi ritorna il valore dopo aver digitato la prima cifra
onChange non fa nulla.
Il tutto funziona con un lettore di barcode.
Domanda: come gestire la sequenza "stringa+invio"?
Grazie a tutti

 Domanda: come gestire la sequenza "stringa+invio"?
Direi che la domanda si riduce eventualmente al "come gestire il tasto
invio":
<input type="text" onkeydown="if (event.keyCode==13)
checkValue(this.value)" />
se invece del tasto invio, associ come terminatore il tab sul lettore di
codice a barre (io solitamente faccio cosi'), allora il tutto si
semplifica:
<input type="text" onchange="checkValue(this.value)" />
oppure, se vuoi scatenare la funzione anche nel caso in cui il valore
inserito sia il medesimo:
<input type="text" onblur="checkValue(this.value)" />
-- 
ZER0://coder.gfxer.web-designer/
~ Un computer e' fondamentalmente stupido.
Non fa cio' che vuoi che faccia, ma cio' che gli dici di fare.
Solo, e' uno stupido dannatamente veloce.
on air ~ "Maki Kimura - Beyond The Bounds"

 <input type="text" onblur="checkValue(this.value)" />
Grazie mille, sei gentilissimo. Stavo provando anche 
window.event.keyCode, intercettando il 13 e comportandomi di conseguenza.
Grazie ancora. Buona giornata

Ho risolto cosi':
<input type='text' name='barcode' onkeypress='LeggiScan(this);'>
function LeggiScan(t)
{
   var a=self.document.due;
   var k=window.event.keyCode;
   if (k==13){
	a.test.value=t.value;
   }else{
	a.test.value='';
   }	
}

 window.event.keyCode, intercettando il 13 e comportandomi di conseguenza.
Ovvero il primo esempio che ti ho portato?
Se il focus deve rimanere sul campo, allora e' sicuramente piu' indicato,
altrimenti ti consiglio di usare la tabulazione.
-- 
ZER0://coder.gfxer.web-designer/
~ "Massi' che e' uno standard, e' uno standard proprietario."
(Gio')


    }	
In questo modo la funzione pero' ti viene eseguita ad ogni carattere
inserito dal lettore a barre; sei sicuro che e' cio' che vuoi?
Se scrivo sei lettere piu' l'invio, lui ogni volta mi andra' a resettare
a.test.value anche se non ce n'e' bisogno.
Idealmente il campo "test" dovresti resettarlo in un altro momento (prima
di inziare la "lettura"), e invocare la funzione "leggiScan" solo nel caso
in cui venga premuto /riceva il tasto invio.
-- 
ZER0://coder.gfxer.web-designer/
~ Come devo regolare la stampante laser per stordire?
(How do I set a laser printer to stun?)


 altrimenti ti consiglio di usare la tabulazione.
Ho postato l'approccio che sto seguendo. Si, il focus rimane li' finche' 
la sequenza non e' completata.
Mi informero' per quanto riguarda la tabulazione. La ritieni migliore?
Non ho indagato piu' di tanto perche' il progetto era nato in ritardo 
(combinazione...), e ho scelto una strada rapida. Ora che respiro un po' 
di piu' lo sto ottimizzando.

 La ritieni migliore?
Dipende dal contesto, ovvero da cio' che deve fare l'applicativo, dal tipo
di interfaccia utente. Personalmente, nel caso di applicativi web-based che
si interfacciavano ad un lettore di codici a barre, ho sempre usato la
tabulazione come carattere finale.
Anche perche' se c'e' un tag form di mezzo, l'invio spesso scatena il
submit, la tabulazione no.
Inoltre la tabulazione e' gia' legata ad almeno due eventi, onblur e
onchange, che mi permettono di gestire il contenuto del campo in modo
efficiente.
-- 
ZER0://coder.gfxer.web-designer/
~ "In svizzera noi non avevamo il campeggio, ma il Lager."
(Domenico, durante una discussione sui campeggi per bimbi)


 submit, la tabulazione no.
Ho aggirato il tutto con il codice di prima, appunto perche' il submit 
mi ricarica la pagina.

 in cui venga premuto /riceva il tasto invio.
Infatti. Quello che c'e' al posto di 'test' verra' chiamato alla fine 
della parte in alto.

 browser. Spingero' comunque verso mozilla.
Ma non stavo opinando sul tipo di browser, quanto sul fatto che usare
"self" non e' molto indicato (tant'e' che e' opzionale) e che se vuoi
proprio scriverci qualcosa, di metterci window (dato che self altro non e'
che un duplicato).
-- 
ZER0://coder.gfxer.web-designer/
~ "Massi' che e' uno standard, e' uno standard proprietario."
(Gio')
on air ~ "Maki Kimura - Beyond The Bounds"

 mi ricarica la pagina.
Appunto, ma si tratta di "aggirare" e scrivere codice in piu'. Nel caso
della tabulazione non ne avresti bisogno.
-- 
ZER0://coder.gfxer.web-designer/
~ You don't have to be crazy to be a webmaster. But it helps.


> In tutta la pagina c'e' solo una textbox?
No, ce ne sono altre sotto un form. Quella in cui scrivo la scansione 
non ha form.




Quindi ci sono altri elementi nella pagina, questo intendevo.
Ad esempio, nelle applicazioni che ho sviluppato circa la lettura di codici
a barre, quest'ultimo e' solo una parte di un'insieme di informazioni che
servono all'utente per definire la richiesta da fare.
-- 
ZER0://coder.gfxer.web-designer/
~ "L'arte non riproduce cio' che e' visibile,ma rende visibile cio' che
non sempre lo e'" (Paul Klee)
