¿Es posible la tecla de punto "desactivar" en un campo de número de HTML usando un teclado de software Android en una aplicación HTML5 Android Web?

votos
0

Cuando compruebo los códigos de tecla en el softKeyboard de [.] [-] [], el e.key en JavaScript es no identificado y el e.keyCode es 229 para todos los caracteres.

El dispositivo es que estoy usando un escáner TC52k y el gatillo de lectura tiene la misma clave y keyCode ... por lo que no puede ser completamente desactivado.

No sé cuántas cosas he intentado que no funcionó ... pero voy a publicar algunos ...

Este es un campo dinámico binded con rivets.js utilizando objetos 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));
    }
});

^ Básicamente, que dice que si el último carácter tiene el código 229 y el último carácter de la cadena introducida es un '', a continuación, cortar el último carácter fuera ... pero no funciona correctamente.

También hice esto que dice básicamente para aceptar sólo las teclas que tienen códigos de teclas entre 48 y 57, que son teclas 1-9 en el teclado de software androide.

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

También no funcionaba ...

¿Alguien tiene experiencia con esto y ayuda lata? Sé que hay un montón de mensajes sin resolver sobre esta línea. Es lo último que tengo que hacer y su mantenimiento de mi aplicación sea desplegado!

También ... He tratado de estas funciones utilizando eventos: keyup, keydown, de cambio, de entrada y de pulsación de teclas ...

Publicado el 14/02/2020 a las 00:06
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Aquí es la mejor solución que he encontrado (desde 229 también activa el gatillo 'scanner', tengo que detectar si una cadena incluye un código de barras y una cantidad y a tener que separar los dos (el código de tecla para un [.]nuevo es el mismo que el keyCode para el gatillo escáner)) las condiciones determinan 2 2 cosas:

Si el valor es mayor que 3, entonces no está permitido como una cantidad debido a que la cantidad no puede ser más de '500', así que cuando tiene una longitud mayor que 5, se considera para ser un código de barras.

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

Esta es la mejor manera que he probado hasta ahora.

Respondida el 18/02/2020 a las 21:35
fuente por usuario

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