Czy możliwe jest „Wyłącz” klucza okres w polu numeru HTML przy użyciu klawiatury ekranowej na Androida Android Web View HTML5 aplikacji?

głosy
0

Kiedy sprawdzić keycodes na softKeyboard dla [.] [-] [] The e.key w JavaScript jest niezidentyfikowany i e.keyCode wynosi 229 dla wszystkich tych znaków.

Urządzenie używam jest skaner TC52k i spust skanowania ma ten sam klucz i kod ... więc to nie może być całkowicie wyłączona.

Nie wiem, jak wiele rzeczy próbowałem, że nie działa ... ale będę pisać niektóre ...

Jest to pole dynamiczne zbindowanych z rivets.js wykorzystaniem obiektów 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));
    }
});

^ W zasadzie, która mówi, że jeśli ostatni znak ma kod 229 i ostatni znak wpisany ciąg jest „”, a następnie wyciąć ostatni znak off ... ale nie działa poprawnie.

Zrobiłem to, że w zasadzie mówi również przyjąć tylko klucze, które mają keycodes między 48 i 57, które są klawisze 1-9 na Android miękkiej klawiatury.

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

Również nie działa ...

Czy ktoś ma doświadczenie z tym i może pomóc? Wiem, że istnieje wiele nierozwiązanych postów na ten temat w Internecie. To ostatnia rzecz, którą trzeba zrobić, a jej utrzymanie moją aplikację z wdrażane!

Także ... Próbowałem te funkcję przy użyciu zdarzenia: keyup, keyDown, zmiana, wejściowe i keypress ...

Utwórz 13/02/2020 o 22:06
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Oto najlepszy obejście, które znalazłem (od 229 wyzwala również „skanera” spust, muszę stwierdzić, czy ciąg zawiera kod kreskowy oraz ilość i będzie musiał oddzielić dwa (kodu dostępu dla [.]znowu jest taka sama jak keyCode na spuście skanera)) dla 2 warunki określają 2 rzeczy:

Jeśli wartość jest większa niż 3, to nie jest dozwolony jako ilości, ponieważ ilość nie może być ponad „500”, więc gdy ma długość dłużej niż 5, to jest uważany za kod kreskowy.

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

Jest to najlepszy sposób Próbowałem tak daleko.

Odpowiedział 18/02/2020 o 19:35
źródło użytkownik

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