HighDots Forums  

Scanner barcode

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss Scanner barcode in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
giorgio
 
Posts: n/a

Default Scanner barcode - 11-16-2004 , 07:37 AM






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

Reply With Quote
  #2  
Old   
ZER0
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 07:49 AM






On Tue, 16 Nov 2004 13:37:36 +0100, giorgio wrote:

Quote:
Il problema e' che non riesco a gestire gli eventi sulla textbox, ovvero
onClick mi ritorna il valore dopo aver digitato la prima cifra
onclick e' relativo al click del mouse.

Quote:
onChange non fa nulla.
onchange viene scatenato quando lasci il campo di testo.

Quote:
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"


Reply With Quote
  #3  
Old   
giorgio
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 08:01 AM



Quote:
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)" /

Grazie mille, sei gentilissimo. Stavo provando anche
window.event.keyCode, intercettando il 13 e comportandomi di conseguenza.

Grazie ancora. Buona giornata


Reply With Quote
  #4  
Old   
giorgio
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 08:06 AM




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='';
}
}

Reply With Quote
  #5  
Old   
ZER0
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 08:09 AM



On Tue, 16 Nov 2004 14:01:44 +0100, giorgio wrote:

Quote:
Direi che la domanda si riduce eventualmente al "come gestire il tasto
invio":

input type="text" onkeydown="if (event.keyCode==13)
checkValue(this.value)" /
[cut]
Grazie mille, sei gentilissimo. Stavo provando anche
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')

on air ~ "Maki Kimura - Beyond The Bounds"


Reply With Quote
  #6  
Old   
giorgio
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 08:15 AM



Quote:
Grazie mille, sei gentilissimo. Stavo provando anche
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.
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.


Reply With Quote
  #7  
Old   
ZER0
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 08:15 AM



On Tue, 16 Nov 2004 14:06:33 +0100, giorgio wrote:

Quote:
input type='text' name='barcode' onkeypress='LeggiScan(this);'

function LeggiScan(t)
{
var a=self.document.due;
Non usare self. Su una versione di IE, talvolta risulta bacato.

Quote:
var k=window.event.keyCode;
Inoltre window e' implicito, in alcuni casi e' bene specificarlo, ma non e'
sempre necessario.

Quote:
if (k==13){
a.test.value=t.value;
}else{
a.test.value='';
}
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?)

on air ~ "Maki Kimura - Beyond The Bounds"


Reply With Quote
  #8  
Old   
ZER0
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 08:20 AM



On Tue, 16 Nov 2004 14:15:23 +0100, giorgio wrote:

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

Ho postato l'approccio che sto seguendo.
Si, ho visto, hai seguito il primo codice che ti ho scritto.

Quote:
Si, il focus rimane li' finche'
la sequenza non e' completata.
Ma la sequenza e' la lettura di tutti i caratteri da parte del codice a
barre, no? Quindi in tal caso sarebbe piu' indicato il tab.
Ovvero, invece di avere stringa+invio, hai stringa+tab.

In questo modo quando viene fatta la lettura del codice a barre, al termine
della sequenza e' il lettore stesso a far spostare il focus dal campo testo
al successivo elemento.

Quote:
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)

on air ~ "Maki Kimura - Beyond The Bounds"


Reply With Quote
  #9  
Old   
giorgio
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 08:24 AM



Quote:
In questo modo quando viene fatta la lettura del codice a barre, al termine
della sequenza e' il lettore stesso a far spostare il focus dal campo testo
al successivo elemento.
Nel mio caso pero' ho una sola textbox, quindi quando ho finito la
lettura faccio alcune operazioni poi torno li'.

Quote:
Anche perche' se c'e' un tag form di mezzo, l'invio spesso scatena il
submit, la tabulazione no.
Ho aggirato il tutto con il codice di prima, appunto perche' il submit
mi ricarica la pagina.



Reply With Quote
  #10  
Old   
giorgio
 
Posts: n/a

Default Re: Scanner barcode - 11-16-2004 , 08:28 AM



Quote:
var a=self.document.due;

Non usare self. Su una versione di IE, talvolta risulta bacato.
Sono in una lan e sono (relativamente) sicuro delle versioni del
browser. Spingero' comunque verso mozilla.

Quote:
if (k==13){
a.test.value=t.value;
}else{
a.test.value='';
}


In questo modo la funzione pero' ti viene eseguita ad ogni carattere
inserito dal lettore a barre; sei sicuro che e' cio' che vuoi?
Si, sto solo facendo dei test. In realta' 'test' non esiste.

Quote:
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.
Infatti. Quello che c'e' al posto di 'test' verra' chiamato alla fine
della parte in alto.


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.