Así que quiero tener una entrada de tipo número <input type="number"> y quiero RESTRINGIR a los usuarios de INGRESAR VALOR DECIMAL
Nota: estoy ocultando los botones giratorios del texto de tipo de entrada.Conozca más aquí
EDITAR: ¡CUALQUIER COSA FUNCIONARÁ! ¡INCLUSO JAVASCRIPT!
Busqué mucho pero no encontré nada.
Encontré esta respuesta , pero básicamente bloquea el uso de cualquier otra tecla en el teclado, excepto las teclas numéricas, por lo que ocurren problemas básicos, como que el usuario no puede usar la tecla de retroceso y cortar el número ingresado, otro problema es que el usuario no puede usar tab para cambie el enfoque a la siguiente entrada.
¡Gracias!
La prevención de la entrada del usuario se puede hacer con JavaScript. Usaría el evento de input para capturar valores, ya que es una interfaz unificada, que abarca cualquier método de entrada que pueda pensar en keyup , paste , pointer events, touch events, etc.
document.querySelector('input').addEventListener('input', e => { e.target.value = Math.round(e.target.value.replace(/\D/g,'')) }); <input>¡Pero realmente no deberías hacerlo! Al menos por las siguientes razones:
:invalid , usando el atributo de pattern (p. ej.: pattern="[0-9]" ), aplicando el estilo correspondiente (p. ej.: :invalid { border-color: red } ), y mostrando un mensaje apropiado.Esta es una opción para crear un elemento de entrada usando javascript para limitar los valores que se pueden ingresar. Creo una matriz de teclas permitidas, incluidos todos los dígitos, el retroceso y el tabulador según lo especificado. Agregué un detector de eventos para el evento keydown, y si la tecla presionada no está en el grupo permitido, evito la acción predeterminada o evito que se ingrese el valor.
También agregué un detector de eventos al evento de pegado, ya que puede hacer clic derecho en pegar e ingresar información que no cumple con los criterios. En lugar de tratar de validar los valores pegados, deshabilito pegar todos juntos.
Si tiene alguna pregunta, por favor pregunte.
const allowedKeys = [..."0123456789", "Backspace", "Tab"]; const myInput = document.querySelector("input"); myInput.addEventListener("keydown", e => { const key = e.key; const allowed = allowedKeys.includes(key); if (!allowed) e.preventDefault(); }); myInput.addEventListener("paste", e => e.preventDefault()); <input type="number">