Сначала, если вы не можете использовать числовые вводы из-за стиля, тогда используйте
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
Чтобы отключить стрелки при вводе чисел, они будут выглядеть так же, как текстовые вводы.
Вот демонстрационная версия: https://jsfiddle.net/ybj8v36z/
РЕДАКТИРОВАТЬ:
Если вы хотите больше ограничений на ваш ввод, используйте регулярное выражение в JS для проверки вашего значения перед добавлением его к фактическому элементу ввода:
let myInput = document.getElementById("my-input");
let myInputValue = myInput.value;
let regex = new RegExp(/(^\-?[0-9]{0,11}$)/);
myInput.addEventListener("input", (e)=>{
e.preventDefault();
if (regex.test(myInput.value))
{
console.log("Change value " + myInputValue + " to " + myInput.value);
myInputValue = myInput.value;
}
else
{
myInput.value = myInputValue;
}
});
Вот рабочая демонстрация: https://jsfiddle.net/75n1fkxa/1/
Надеюсь, это поможет.