Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    Problema lettura codice a barre

    Buongiorno, potreste aiutarmi? Dal campo "N. inventario" di questa pagina (pagina caricata, il sito è protetto), sto provando a leggere i codici a barre con lettore di codice a barre, ma vengono lette solo 2 delle (massimo) 5 cifre, ecco il video. Con questo userscript ho in parte risolto incrementando maxLength da 9 a 12, con questo risultato (video). Tuttavia in questo modo vengono letti bene solo inventari con numeri (ad esempio 60000). Gli inventari con lettere (come CIN3738), invece, vengono catturati integralmente (video), ma il campo dovrebbe catturare solo la parte numerica (3738), in quanto il prefisso alfabetico (CIN) viene già selezionato manualmente nel menu a discesa del campo a sinistra. Ho provato invano a risolvere aggiungendo allo script questa linea di codice per estrarre la sola parte numerica:
    codice:
    field.value.match(/\d+/);

    ma anche così la lettura è integrale, vengono catturati lettere e numeri (CIN3738).
    Ultima modifica di Annuitcoeptis; 03-05-2023 a 16:33

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, bisognerebbe piuttosto fare un replace di tutte le cifre non numeriche. Una cosa tipo:

    codice:
    valore.replace(/[^\d]+/g, '');
    Questo potrebbe essere fatto sul valore stesso, cioè quello restituito dal lettore, prima che sia inserito nel campo, oppure sul value del campo, una volta che è stato inserito.

    Nell'ultimo caso potresti avere una cosa del genere:
    codice:
    field.value = field.value.replace(/[^\d]+/g, '');
    Non so dirti dove tu possa eseguire questa correzione, dal momento che non è chiaro come avvenga la lettura del codice e la gestione del valore che viene inserito nel campo. Suppongo ci sia un qualche evento di ricezione del valore o una qualche funzione di inserimento nel campo, per cui la correzione del valore potrebbe andare lì.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Grazie! Stesso risultato con questo codice, forse il replace andrebbe fatto sul valore stesso, cioè quello restituito dal lettore, prima che sia inserito nel campo. Questo sarebbe il codice originario:
    codice:
    <label>
               <span class="grid-3">N. inventario</span>
               <span id="spanSerie" class="grid-3">
                 <select id="idserie" name="serie" style="min-width: 0px; display: none;">
    <option value="   ">   </option>
    <option value="CDM">CDM</option>
    <option value="CIN">CIN</option>
    <option value="PER">PER</option>
    </select><div class="chosen-container chosen-container-single chosen-container-single-nosearch" style="width: 84px;" title="" id="idserie_chosen"><a class="chosen-single chosen-single-with-deselect" tabindex="-1"><span>   </span><abbr class="search-choice-close"></abbr><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" readonly=""></div><ul class="chosen-results"></ul></div></div>
    </span>
               <input class="grid-5" type="text" name="inventario" value="" maxlength="9">
               </label>
    Ultima modifica di Annuitcoeptis; 03-05-2023 a 17:21

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Chiaro, non ti ho dato una soluzione pronta all'uso. Certamente mettere quella parte nello script, così come è, non produce alcunché... lo davo per scontato, ma evidentemente non sono stato abbastanza chiaro

    Mi quoto e ripeto:
    Quote Originariamente inviata da KillerWorm
    Non so dirti dove tu possa eseguire questa correzione, dal momento che non è chiaro come avvenga la lettura del codice e la gestione del valore che viene inserito nel campo. Suppongo ci sia un qualche evento di ricezione del valore o una qualche funzione di inserimento nel campo, per cui la correzione del valore potrebbe andare lì.
    Ancora una volta, come tutte le altre, devo ribadirti che senza vedere la pagina in azione è alquanto difficile capire come, e soprattutto dove, andare a mettere le mani.

    Hai fatto benissimo a riportare la pagina salvata e i vari video per chiarire al meglio il problema, ma anche in questo caso non basano. Bisogna capire come agisce la parte di gestione del lettore di codici a barre, se ha delle eventuali API da poter usare per rilevare e quindi modificare il valore prima che sia inserito nel campo, o quantomeno, come viene popolato quel campo per poter eventualmente correggerne il valore una volta inserito.

    Nella pagina salvata non vedo script che riguardano questa parte, per cui dovresti essere tu a cercare il modo e il posto in cui inserire quanto suggerito o, quantomeno, dovresti fornire tutte le indicazioni del caso riguardo il contesto di utilizzo.

    Come avviene l'inserimento automatico del valore?
    C'è un qualche evento relativo alla lettura del codice col lettore?
    Ci sono delle documentazioni a riguardo?


    EDIT: ho visto ora il tuo edit dove hai aggiunto il codice originario, ma il codice HTML non basta. Bisogna capire come agisce il lettore di codici per inserire il valore nel campo.
    Quel campo deve essere selezionato dall'utente, così che usando il lettore si riversi automaticamente il valore?
    Quando il campo viene popolato automaticamente attraverso il lettore, avviene un qualche evento per quel campo (ad es. input o change o qualcos'altro)? Puoi verificare?
    In questo caso si potrebbe pensare di inserire la correzione su un qualche tale evento.

    Dopo che il campo viene popolato, sta all'utente cliccare per procedere con l'operazione di ricerca? Oppure la cosa avviene in automatico?
    Se il campo risulta attivo (quindi ha il focus), uscendo dallo stesso avverrebbe un evento blur, per cui si potrebbe pensare di inserire la correzione in questo evento.

    Però devi indicare tu cosa sta avvenendo, altrimenti andare sempre avanti per ipotesi diventa estenuante
    Ultima modifica di KillerWorm; 03-05-2023 a 17:54
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Okay, ti rispondo per punti..

    Quel campo deve essere selezionato dall'utente, così che usando il lettore si riversi automaticamente il valore?
    Sì, seleziono il campo, lo scanner (questo) legge il valore e riversa nel campo l'inventario alfanumerico

    Dopo che il campo viene popolato, sta all'utente cliccare per procedere con l'operazione di ricerca? Oppure la cosa avviene in automatico?
    In automatico

    Quando il campo viene popolato automaticamente attraverso il lettore, avviene un qualche evento per quel campo (ad es. input o change o qualcos'altro)? Puoi verificare?
    Come posso verificarlo (immagino dal DevTools, ma non saprei come)? Dalla console non avviene nulla
    Ultima modifica di Annuitcoeptis; 03-05-2023 a 19:44

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Andiamo per tentativi.
    Non ho esperienza diretta riguardo il funzionamento di lettori del genere; dal manuale non sono riuscito a capire come si interfaccia con un campo di un form ma posso pensare che trasmetta i dati così come può funzionare una normale tastiera, per cui ipotizzo che avvenga un evento input.

    Prova quindi ad inserire quella riga impostando l'evento input per quel campo.
    Avrai quindi uno script del genere:

    codice:
    const field = document.querySelector("#DetailsOpen_Array04 > div > label:nth-child(2) > input");
    field.maxLength = "12";
    
    field.addEventListener('input', e => {
      field.value = field.value.replace(/[^\d]+/g, '');
    });
    Se non funziona prova con l'evento "change" o "blur".
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Grande, verme assassino, sei un mago, ti ringrazio moltissimo!!! Una domanda: si può far sì, una volta selezionato manualmente "CIN" dal menu a cascata, che il focus si indirizzi automaticamente sul campo libero affianco, poi da popolare col lettore ottico, senza essere io a cliccare col mouse?
    Ultima modifica di Annuitcoeptis; 04-05-2023 a 10:09

  8. #8
    ... *una volta selezionato manualmente "CIN" oppure "CDM" oppure "PER" dal menu a cascata

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da Annuitcoeptis
    Grande
    bene, a goccia a goccia la pietra si fora

    Quote Originariamente inviata da Annuitcoeptis
    una volta selezionato manualmente "CIN" dal menu a cascata
    Non è un elemento standard, bisogna capire come funziona. Dalla pagina salvata vedo che è una sorta di combo-box, costituito da diversi elementi; anche qui bisogna capire quale evento è possibile usare e, in questo caso, su quale specifico elemento di quel combo-box, in modo da catturare l'avvenuta scelta da parte dell'utente.

    Nella pagina salvata quell'affare non è funzionante, quindi anche qui bisognerebbe andare a tentoni

    Più tardi provo ad indicarti come procedere per analizzare gli eventi attraverso DevTools.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Ok, oggi posso usare il PC fino alle 15.30 se riusciamo, grazie mille! Ho trovato qualcosa di simile quì e qui, se può aiutare... Ho provato a verificare se al click sul valore ("CIN", "CDM", "PER") del menu a cascata accade qualcosa dalla scheda "Listener di eventi" (sottoscheda "click") del DevTools, ma non si aggiunge nulla...
    Immagini allegate Immagini allegate
    Ultima modifica di Annuitcoeptis; 04-05-2023 a 13:44

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.