Я использую JQuery Tools Validator который реализует проверки HTML5 через jQuery. Пока все отлично работает, кроме одной вещи. В спецификации HTML5 тип ввода «число» может иметь как целые числа, так и числа с плавающей точкой. Это кажется невероятно недальновидным, поскольку это будет полезным средством проверки, только если поля вашей базы данных имеют числа с плавающей запятой со знаком (для неподписанных целочисленных значений вам придется вернуться к проверке «шаблона» и, таким образом, потерять дополнительные функции, такие как «вверх» и «вниз»). стрелки для браузеров, которые его поддерживают). Есть ли другой тип ввода или, возможно, атрибут, который будет ограничивать ввод только целыми числами без знака? Я не смог найти ни одного, спасибо.
РЕДАКТИРОВАТЬ
Хорошо, ребята, я ценю ваше время и помощь, но я вижу много незаслуженного голосования: D. Установка шага в 1 не является ответом, поскольку он не ограничивает ввод. Вы все еще можете ввести отрицательное число с плавающей точкой в текстовое поле. Кроме того, я знаю о проверке шаблонов (я упоминал об этом в моем первоначальном сообщении), но это не было частью вопроса. Я хотел знать, позволяет ли HTML5 ограничивать ввод типа «число» положительными целочисленными значениями. Похоже, что на этот вопрос ответ будет «нет, это не так». Я не хотел использовать валидацию шаблонов, потому что это вызывает некоторые недостатки при использовании валидации jQuery Tools, но теперь кажется, что спецификация не допускает более чистого способа сделать это.
источник
number
вход (по крайней мере, в FF / Chrome / Safari) теперь принимает по умолчанию только целые числа, если только вы не установили явное значение дляstep
attr, которое допускает десятичные значения; например:step="0.01"
. Документированный MDN здесь . У меня две мысли об этом, потому что я думаю, что это разумное значение по умолчанию, но также и серьезное изменение (да, это повлияло на некоторый код, который я написал).Ответы:
https://www.w3.org/wiki/HTML/Elements/input/number
Лучшее, что вы можете достичь только с HTML
источник
min
чтобы ,1
как он хочет положительные числа (а не неотрицательные числа).<input type="number" min="0" step="1"/>
самый правильный ответ на вопрос. Во всяком случае, какой смысл иметь и тоstep="1"
и другоеpattern="\d+"
? Я не могу набирать числа с плавающей запятой в обоих случаях.Установите
step
атрибут на1
:В Chrome сейчас это выглядит немного ошибочно, поэтому на данный момент это может быть не лучшим решением.
Лучшее решение состоит в том, чтобы использовать
pattern
атрибут, который использует регулярное выражение, чтобы соответствовать вводу:\d
является регулярным выражением для числа,*
означает, что оно принимает более одного из них. Вот демо: http://jsfiddle.net/b8NrE/1/источник
number
, содержащего другие символы, Chrome покажет вам сообщение об ошибке.submit
запуска публикации./\d*/.test(1.1) // true
pattern="\d*"
- это не то же самое/\d*/
,pattern="\d*"
что/^(?:\d*)$/
, пожалуйста, обратитесь к документации по атрибутам шаблона HTML5 .Используя этот код, ввод в текстовое поле ограничивается вводом только цифр. Шаблон - это новый атрибут, доступный в HTML 5.
Шаблон атрибута документа
источник
Простой способ использования JavaScript:
источник
replace(/(\..*)\./g, '$1')
.
только один раз, например,123.556
можно записать.Шаблон хорош, но если вы хотите ограничить ввод только числами с type = "text", вы можете использовать oninput и регулярное выражение, как показано ниже:
Я лажу за меня :)
источник
Это не только для html5, все браузеры работают нормально. попробуй это
источник
oninput
вместо этогоШаблон всегда предпочтительнее для ограничения, попробуйте
oninput
иmin
происходит 1 для ввода только цифр от 1 и далееисточник
Вы пытались установить
step
атрибут в 1, как этоисточник
Просто поместите его в поле ввода:
onkeypress='return event.charCode >= 48 && event.charCode <= 57'
источник
Может быть, это не подходит для каждого варианта использования, но
может сделать хорошую работу: скрипка .
Проверьте документацию .
источник
Да, HTML5 делает. Попробуйте этот код ( w3school ):
Видите минимальный и максимальный параметры? Я попробовал это, используя Chrome 19 (работал) и Firefox 12 (не работал).
источник
Я работал на Chrome и у меня были некоторые проблемы, хотя я использую атрибуты HTML. Я закончил с этим кодом JS
источник
Set
step="any"
. Работает отлично. Ссылка: http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/источник
Установите
step
атрибут в любое число с плавающей точкой, например, 0,01, и все готово.источник
Из спецификации
Таким образом, вы можете просто установить его на
1
:источник
источник
В настоящее время невозможно запретить пользователю записывать десятичные значения в вводе только с использованием HTML. Вы должны использовать JavaScript.
источник
источник
В Future ™ (см. « Могу ли я использовать» ) на пользовательских агентах, которые предоставляют вам клавиатуру, вы можете ограничить ввод текста только цифрами
input[inputmode]
.источник
inputmode
в основном для портативных устройств и будет запускать правильную раскладку клавиатуры, но для «обычных» компьютеров с клавиатурой это не помешает вводить то, что вы хотите.