IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Interdire les touches clavier dans un input, mais autoriser le scan via une douchette d'un code barre


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 336
    Par défaut Interdire les touches clavier dans un input, mais autoriser le scan via une douchette d'un code barre
    Bonjour,

    Je suis sur un projet qui consiste à faire une petite station autonome sur un portable.
    Pour se faire, les membres devront scanner avec une douchette le code barre sur leur carte de membre.
    Le soucis : il ne peuvent rien introduire via le clavier car ils risqueraient d'être sur une autre personne.

    J'ai trouvé un petit script qui déconnecte complètement le clavier, mais impossible de scanner comme je le redoutait vu que la douchette envoie les caractères : c'est un numéro de membre, donc que des chiffres.
    Je vais certainement configurer la douchette pour faire "enter" après le scan pour envoyer le formulaire et le traiter, je n'ai pas encore testé, mais cela va certainement coincer aussi.

    Cette mise hors service n'est que pour cette page.

    Quelqu'un a une idée si c'est possible ?

    Voici le java script de test que j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    print "<form name=\"cours_jour_choix_membre\" method=\"post\" action=\"?pg=cours_jour&amp;rep=cours&action=membre\">";
            print "<div class=\"div_left_20\"><input type=\"text\" id='chiffre' name=\"id_prop\" size=\"30\" class=\"champ_form\" /></div>";
            print "<input type=\"checkbox\" />";
    print "</form>"; 
     
     ?>
     <script type="text/javascript">
    window.onload=function() {
      document.getElementById('chiffre').onkeypress = function(e) {
        var touche;
        if(!e&&window.event) {
          e = window.event;
          touche = e.keyCode;
        } else {
          touche = e.charCode;
        }
        if(touche>48||touche<57) {
          if(e.preventDefault) { e.preventDefault(); }
          else { e.returnValue = false; }
          return false;
        }
      };
    };
     
    <!-- ---------- Placement du curseur dans le champs "N° de membre" ---------- -->
    	document.cours_jour_choix_membre.id_prop.focus();
    </script>
    Je suis à mes tout début en javascript

    @+
    ddaweb

  2. #2
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 336
    Par défaut
    Ouch, cela a l'air plus complexe que prévu

    Si j'ai bien compris le fonctionnement de la douchette, elle enverrait un code ASCII pour remplacer le clavier, cela est peut-être une indication qui pourrait donner une piste.
    Voici le modèle utilisé : http://www.zebex.com/Product/Handheld/Z-3100.html (le manuel de programmation est téléchargeable).

    il y a peut-être une partie du JS à supprimer pour autoriser le code ASCII de passer, ne laisser que les Keycode ?

    Je pensait à ceci, mais comme je ne comprend pas vraiment tout ce n'est qu'une supposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else {
          touche = e.charCode;
        }
    Edit :

    J'avais trouvé un code qui empêchait parfaitement l'introduction de chiffres dans les conditions suivantes :
    - sur le pavé numérique
    - CAPS LOCK et les chiffres au dessus des lettres

    Mais les chiffres passaient avec SHIFT et chiffre.

    Uniquement empêcher les chiffres suffit pour moi, le reste pourrait être fait avec un regex au traitement ou JS (ex. avec une alerte).

  3. #3
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 336
    Par défaut
    J'ai beau chercher sur la toile, rien ne semble pouvoir le faire.

    J'ai donc pensé à une autre méthode qui elle devrait fonctionner :

    Comme la douchette envoie les chiffres assez rapidement les uns derrière les autres : autoriser le chiffre que si le chiffre suivant arrive dans un délai déterminé (ex. : 100ms, que j'adapterai avec des tests) ... si ce délai est dépassé : ne rien faire.
    Par contre il faut tout de même afficher le dernier chiffre (nombre > 1 chiffre) après un délai d'attente sans autre chiffre (ex. : 500 ms, aussi à tester) !!
    Cela devrait fonctionner car la plupart des membres sont >1000 quelques-un à 3 chiffres et très peu à 2 chiffres.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/06/2006, 14h39
  2. Utiliser les touches flèche dans un controle Edit
    Par Henri dans le forum Windows
    Réponses: 6
    Dernier message: 26/05/2006, 22h32
  3. Les données sont dans la base, mais ne s'affichent pas
    Par ryan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/03/2006, 10h59
  4. Interdire les touche ALT F4
    Par phoon dans le forum Access
    Réponses: 1
    Dernier message: 08/03/2006, 17h24
  5. intercepter les messages clavier dans un CDialog
    Par firejocker dans le forum MFC
    Réponses: 3
    Dernier message: 26/12/2005, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo