E 'possibile la chiave periodo di "disable" in un campo di numero HTML utilizzando una tastiera software Android su un Android Web View HTML5 app?

voti
0

Quando controllo i keycodes sul SoftKeyboard per [.] [-] [], l'e.key in JavaScript è non identificato e l'e.keyCode è 229 per tutti quei personaggi.

Il dispositivo che sto usando è uno scanner TC52k e il grilletto di scansione ha la stessa chiave e keyCode ... quindi non può essere completamente disattivato.

Non so quante cose ho provato non ha funzionato ... ma mi post un po '...

Si tratta di un campo dinamico rilegata con rivets.js utilizzando oggetti 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));
    }
});

^ In sostanza, che dice che se l'ultimo personaggio ha il codice 229 e l'ultimo carattere della stringa inserita è un '', quindi tagliare l'ultimo carattere fuori ... ma non funziona correttamente.

Ho anche fatto presente che in pratica dice di accettare solo le chiavi che hanno keycode tra 48 e 57, che sono le chiavi 1-9 su Android tastiera virtuale.

<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>

Inoltre non ha funzionato ...

Qualcuno ha esperienza con questo e può aiutare? So che c'è un sacco di messaggi non risolti su questa linea. E 'l'ultima cosa che devo fare e la sua mantenere la mia app di essere schierato!

Anche ... Ho provato queste funzioni utilizzando eventi: keyup, KeyDown, di cambiamento, di ingresso e keypress ...

È pubblicato 13/02/2020 alle 22:06
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Ecco la soluzione migliore che ho trovato (dal 229 fa scattare anche il grilletto 'scanner', devo rilevare se una stringa contiene un codice a barre e una quantità e dovrò separare i due (la keyCode per un [.]nuovo è lo stesso del keyCode per il trigger scanner)) I 2 condizioni determinano 2 cose:

Se il valore è superiore a 3, allora non è consentito come quantità perché la quantità non può essere troppo '500', in modo che quando ha una lunghezza superiore a 5, è considerato essere un codice a barre.

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(), "]");
});

Questo è il modo migliore che ho provato finora.

Risposto il 18/02/2020 a 19:35
fonte dall'utente

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