Введите число со значением 01 в toString в Javascript

Я использую номер типа ввода в своем HTML. В javascript / jquery мне нужно проверить длину цифр, и я использую toString().length. Но он преобразует 01 в 1, и длина становится 1. Вместо этого он должен печатать 2 как длину.

<input id = "exp-mm" maxlength = "2" type = "number">

01 - это не число. Если вам нужен этот формат, вам нужно использовать type = "text".

JJJ 06.05.2018 15:42

Пользователь может вводить только цифры.

Umair Jameel 06.05.2018 15:43

Затем вам нужно добавить настраиваемую проверку. Это type = "number", а не type = "digits".

JJJ 06.05.2018 15:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
196
3

Ответы 3

К сожалению, для этого варианта использования вы не можете использовать 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;
}

Другие вопросы по теме