Er det mulig å "disable" perioden nøkkelen i en HTML nummerfelt ved hjelp av en Android-soft-tastatur på en Android-nettet Se HTML5 app?

stemmer
0

Når jeg sjekke keycodes på softKeyboard for [.] [-] [], den e.key i Javascript er Uidentifisert og e.keyCode er 229 for alle disse tegnene.

Enheten jeg bruker er en TC52k skanner og skanningen trigger har samme nøkkel og nøkkelkoder ... så det ikke kan være helt deaktivert.

Jeg vet ikke hvor mange ting jeg prøvde som ikke fungerte ... men jeg vil legge ut noen ...

Dette er en dynamisk felt rygg med rivets.js hjelp JSON-objekter

$(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));
    }
});

^ Utgangspunktet, som sier at hvis det siste tegnet har koden 229 og det siste tegnet av den angitte strengen er en '', og deretter klippe det siste tegnet off ... men fungerer ikke riktig.

Jeg gjorde også dette som i utgangspunktet sier bare godta nøkler som ikke har keycodes mellom 48 og 57 som er tastene 1-9 på android myke tastaturet.

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

Også fungerte ikke ...

Er det noen som har erfaring med dette og kan hjelpe? Jeg vet det er mange uløste innlegg om dette på nettet. Det er det siste jeg har å gjøre, og det er å holde min app blir distribuert!

Også ... Jeg har prøvd disse fungerer ved hjelp av begivenheter: keyup, keydown, endre, inngang og tastetrykk ...

Publisert på 14/02/2020 klokken 00:06
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Her er den beste løsningen som jeg fant (siden 229 utløser også 'scanner' trigger, må jeg oppdage om en streng inneholder en strekkode og en mengde og blir nødt til å skille de to (nøkkelkoder for et [.]nytt er det samme som nøkkelkoder for skanneren trigger)) de 2 forholdene bestemmer 2 ting:

Hvis verdien er lengre enn tre, så er det ikke tillatt som en mengde fordi mengden ikke kan være over '500', så når den har en lengde lengre enn 5, er det anses å være en strekkode.

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

Dette er den beste måten jeg har prøvd så langt.

Svarte 18/02/2020 kl. 21:35
kilden bruker

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