Я использую номер типа ввода в своем HTML. В javascript / jquery мне нужно проверить длину цифр, и я использую toString().length. Но он преобразует 01 в 1, и длина становится 1. Вместо этого он должен печатать 2 как длину.
<input id = "exp-mm" maxlength = "2" type = "number">
Пользователь может вводить только цифры.
Затем вам нужно добавить настраиваемую проверку. Это type = "number", а не type = "digits".



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


К сожалению, для этого варианта использования вы не можете использовать type = "number", потому что вы не хотите, чтобы 01 переходил в 1. Используйте type = "text", и у вас может быть событие onChange для принудительного применения только цифр с использованием регулярного выражения.
Если вы просто хотите проверить, сколько букв / цифр в вашем поле ввода, вы можете проверить это следующим образом
document.getElementById("exp-mm").value.split("").length
var e = document.getElementById("exp-mm");
document.getElementById("btn").addEventListener("click", function(){
console.info(e.value.length)
})<input id = "exp-mm" maxlength = "2" type = "number">
<button id = "btn">Count</button>Вот пример того, что вы пытаетесь сделать, на основе документации проверка формы на MDN.
https://jsfiddle.net/xbq3tf3t/1/
HTML:
<!-- Learn about this code on MDN: https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation -->
<form>
<label for = "month">Expiry month (mm)</label>
<input id = "month" required pattern = "0?[1-9]|1[0-2]">
<button>Submit</button>
</form>
<div>
Length: <span id = "length"></span>
</div>
JavaScript:
document.getElementById('month')
.addEventListener('keyup', event => {
const element = document.getElementById('length');
element.innerText = event.target.value.length;
});
CSS:
input:invalid {
border: 2px dashed red;
}
input:valid {
border: 2px solid black;
}
01 - это не число. Если вам нужен этот формат, вам нужно использовать
type = "text".