Este posibil să „disable“ cheia perioadă într-un câmp număr HTML utilizând o tastatură moale Android pe un dispozitiv Android Vizualizare Web HTML5?

voturi
0

Când m-am verifica keycodes pe softKeyboard pentru [.] [-] [], este e.key în JavaScript este „neidentificat“, iar e.keyCode este 229 pentru toate aceste caractere.

Dispozitivul I sînt folosire este un scaner TC52k și declanșatorul de scanare are aceeași cheie și keycode ... deci nu poate fi complet dezactivat.

Nu știu cât de multe lucruri am încercat nu a funcționat ... dar voi posta niște ...

Acesta este un domeniu dinamic binded cu rivets.js folosind obiecte 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));
    }
});

^ Practic, care spune că în cazul în care ultimul caracter are codul 229 și ultimul caracter al șirului introdus este un „“, apoi se taie ultimul caracter off ... dar nu funcționează corect.

Am făcut, de asemenea, acest lucru spune că, practic, să accepte numai cheile care au keycodes între 48 și 57 care sunt tastele 1-9 de pe tastatură moale 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>

De asemenea, nu a funcționat ...

Are cineva experienta cu acest lucru și poate ajuta? Știu că există o mulțime de posturi nerezolvate cu privire la acest online. E ultimul lucru pe care trebuie să fac și păstrarea ei aplicația mea de a fi utilizate!

De asemenea, ... Am încercat aceste funcții, folosind evenimente: keyup, KeyDown, schimbare, de intrare și ... apãsare

Întrebat 14/02/2020 la 00:06
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Aici este cel mai bun workaround pe care am găsit (din 229 declanșează , de asemenea , pe trăgaci „scanner“, am pentru a detecta dacă un șir de caractere include un cod de bare și o cantitate și va trebui să separe cele două (keycode pentru [.]nou este la fel ca keycode pentru declanșare scaner)) Cele 2 condiţiile stabilesc 2 lucruri:

Dacă valoarea este mai mare de 3, atunci nu este permis ca o cantitate, deoarece cantitatea nu poate fi de peste „500“, astfel încât atunci când are o lungime mai mare de 5, este considerat a fi un cod de bare.

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

Acesta este cel mai bun mod am încercat până acum.

Publicat 18/02/2020 la 21:35
sursa de către utilizator

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