Sé cómo hacer que la entrada de números sea completamente de solo lectura. Sin embargo, ¿cómo hago para que se bloquee la escritura? Ya que puedo escribir números infinitos a pesar de que el valor máximo es 10 (y funciona, pero solo cuando se usa esta cosa de arriba y abajo). Si hace falta algún código házmelo saber, aunque no lo creo
Puede usar Javascript para verificar cuál es el valor del número cada vez que cambia, y si es mayor (o menor) que lo que ha especificado, restablezca el valor al máximo o al mínimo:
let number = document.getElementById("number"); let max = 10; let min = 0; number.addEventListener('input', () => { if (number.value > max) { number.value = max; } if (number.value < min) { number.value = min; } }); <input type="number" id="number" step="1" max="10" min="0">Todavía use el tipo de número, ya que hará al menos parte de la verificación por usted, pero captará la entrada del usuario y, si el número se vuelve demasiado grande, vuelva al valor anterior (es decir, ignore el dígito escrito más reciente tal como lo haría con un z personaje).
let limitedInputs = document.querySelectorAll("input.limitedNumber"); let prevValue = 0; limitedInputs.forEach(input => { input.addEventListener('input', () => { if (input.value > input.max) { input.value = prevValue; } else if (input.value < input.min) { input.value = input.min; } else { prevValue = input.value; } }); }); <input type="number" max="10" min="0" class="limitedNumber">Este fragmento solo establece el valor mínimo si el valor escrito por el usuario es demasiado bajo, pero es posible que desee que el comportamiento sea diferente según el valor mínimo.