Est-il possible à la clé de période « désactiver » dans un champ de numéro HTML en utilisant un clavier logiciel Android sur une application Android Web Voir html5?

voix
0

Quand je vérifie les codes d'activation de la SoftKeyboard pour [.] [-] [], le e.key en est javaScript « non identifiée » et le e.keyCode est de 229 pour tous ces personnages.

Le dispositif J'utilise est un scanner TC52k et la gâchette de lecture a la même clé et codeTouche ... donc il ne peut pas être complètement désactivé.

Je ne sais pas combien de choses j'ai essayé cela ne fonctionne pas ... mais je vais poster quelques-uns ...

Ceci est un champ dynamique binded avec rivets.js en utilisant des objets JSON

$(document).on(keydown, .qty-input, function(e) {
    let code = e.keyCode;
    if (code == 229 && $(this).val().charAt(str.length - 1) == .) {
        $(this).val($(this).val().slice(0, -1));
    }
});

^ En fait, qui dit que si le dernier caractère a le code 229 et le dernier caractère de la chaîne saisie est un « », puis couper le dernier caractère hors ... mais ne fonctionne pas correctement.

Je l'ai fait aussi ce que dit essentiellement d'accepter seulement les clés qui ont keycodes entre 48 et 57 qui sont les touches 1-9 sur le clavier logiciel Android.

<input class=qty-input placeholder=0 type=number min=0 step=1 onkeypress=return event.charCode >= 48 && event.charCode <= 57 && event.keyCode != 229 pattern=[0-9]* autofocus>

Aussi ne fonctionnait pas ...

Quelqu'un at-il une expérience avec cela et aide peut? Je sais qu'il ya beaucoup de messages non résolues au sujet de cette ligne. C'est la dernière chose que je dois faire et son garder mon application d'être déployée!

Aussi ... J'ai essayé ces fonctions à l'aide d'événements: keyup, keydown, changement, entrée et ... keypress

Créé 14/02/2020 à 00:06
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Voici la meilleure solution que je trouve (depuis 229 déclenche également la gâchette « scanner », je dois détecter si une chaîne comprend un code à barres et une quantité et vais devoir séparer les deux (codeTouche un [.]est à nouveau identique à la codeTouche pour le déclenchement du scanner)) les 2 conditions déterminent 2 choses:

Si la valeur est supérieure à 3, il n'a pas le droit en quantité parce que la quantité ne peut pas être plus « 500 », alors quand il a une longueur supérieure à 5, il est considéré comme un code à barres.

let oldVal = '';
let newVal = '';
let barcode = '';
$(document).on("keydown", "input.received-qty", function(e) {
    let code = e.keyCode || e.which || e.charCode;
    oldVal = $(this).val();
});

$(document).on("keyup", "input.received-qty", function(e) {
    let code = e.keyCode || e.which || e.charCode;
    newVal = $(this).val();
    if (code == 229 && e.target.value.length >= 3) {
        barcode = $(this).val().slice(oldVal.length - 1, -1);
        $(this).val(oldVal);
    } else if (code == 229 && e.target.value.length <= 3) {
        let x = oldVal.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, "");
        $(this).val('');
        $(this).val(x);
    }
    console.log("oldVal : ", "[", oldVal, "]", "newVal : ", "[", $(this).val(), "]");
});

C'est la meilleure façon que je l'ai essayé jusqu'à présent.

Créé 18/02/2020 à 21:35
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more