HTML5: тип ввода номера, который принимает только целые числа?

Я использую средство проверки jQuery Tools Validator, которое реализует проверки HTML5 через jQuery. До сих пор он работал отлично, за исключением одного. В спецификации HTML5 тип ввода «число» может иметь как целые числа, так и числа с плавающей запятой. Это кажется невероятно близоруким, поскольку это будет только полезный валидатор, когда ваши поля базы данных будут подписаны с номерами с плавающей запятой (для неподписанных ints вам придется вернуться к проверке «шаблонов» и, следовательно, потерять дополнительные функции, такие как стрелки вверх и вниз для браузеров, которые его поддерживают). Есть ли другой тип ввода или, возможно, атрибут, который ограничивает ввод только целыми без знака? Я не мог найти, спасибо.

РЕДАКТИРОВАТЬ

Хорошо, ребята, я ценю ваше время и помощь, но я вижу много незаслуженных голосований: D. Установка шага в 1 не является ответом, поскольку он не ограничивает ввод. Вы все равно можете ввести отрицательный номер с плавающей запятой в текстовое поле. Кроме того, мне известно о проверке шаблонов (я упомянул об этом в своем оригинальном посте), но это не было частью вопроса. Я хотел знать, допускает ли HTML5 ограничение ввода типа «число» на положительные целочисленные значения. На этот вопрос ответ, похоже, будет «нет, это не так». Я не хотел использовать проверку шаблонов, потому что это вызывает некоторые недостатки при использовании проверки JQuery Tools, но теперь кажется, что спецификация не позволяет более чистый способ сделать это.

https://www.w3.org/wiki/HTML/Elements/input/number

Лучшее, что вы можете достичь только с помощью HTML

 

Установите для атрибута step значение 1 :

  

В настоящее время это похоже на ошибку в Chrome, поэтому на данный момент это не может быть лучшим решением.

Лучшее решение – использовать атрибут pattern , который использует регулярное выражение для ввода:

  

\d является регулярным выражением для числа, * означает, что он принимает более одного из них. Вот демо: http://jsfiddle.net/b8NrE/1/

Простой способ использования JavaScript:

  
  

Используя этот код, вход в текстовое ограничение feild вводит только цифры …. Шаблон – это новый атрибут, ansible в HTML5

Документ атрибута Patter

Это не только для html5, все браузер работает нормально. попробуй это

 onkeyup="this.value=this.value.replace(/[^0-9]/g,'');" 

Шаблон хорош, но если вы хотите ограничить ввод номерами только с помощью типа = «текст», вы можете использовать oninput и regex, как показано ниже:

  

Я боюсь за меня 🙂

Шаблон всегда предпочтительнее для ограничения, попытка oninput и min имеют значение 1 для ввода только чисел от 1 до

  

вы пробовали установить атрибут step на 1, как это

  

Да, HTML5 делает. Попробуйте этот код ( w3school ):

    
Quantity (between 1 and 5):

См. Минимальный и максимальный пареметр? Я пробовал его с помощью Chrome 19 (работал) и Firefox 12 (не работал).

Я работал в Chrome и имел некоторые проблемы, хотя использовал html-атрибуты. Я закончил с этим кодом js

 $("#element").on("input", function(){ var value = $(this).val(); $(this).val(""); $(this).val(parseInt(value)); return true; }); 

Установите step="any" . Работает отлично. Ссылка: http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/

 var valKeyDown; var valKeyUp; function integerOnly(e) { e = e || window.event; var code = e.which || e.keyCode; if (!e.ctrlKey) { var arrIntCodes1 = new Array(96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 8, 9, 116); // 96 TO 105 - 0 TO 9 (Numpad) if (!e.shiftKey) { //48 to 57 - 0 to 9 arrIntCodes1.push(48); //These keys will be allowed only if shift key is NOT pressed arrIntCodes1.push(49); //Because, with shift key (48 to 57) events will print chars like @,#,$,%,^, etc. arrIntCodes1.push(50); arrIntCodes1.push(51); arrIntCodes1.push(52); arrIntCodes1.push(53); arrIntCodes1.push(54); arrIntCodes1.push(55); arrIntCodes1.push(56); arrIntCodes1.push(57); } var arrIntCodes2 = new Array(35, 36, 37, 38, 39, 40, 46); if ($.inArray(e.keyCode, arrIntCodes2) != -1) { arrIntCodes1.push(e.keyCode); } if ($.inArray(code, arrIntCodes1) == -1) { return false; } } return true; } $('.integerOnly').keydown(function (event) { valKeyDown = this.value; return integerOnly(event); }); $('.integerOnly').keyup(function (event) { //This is to protect if user copy-pastes some character value ,.. valKeyUp = this.value; //In that case, pasted text is replaced with old value, if (!new RegExp('^[0-9]*$').test(valKeyUp)) { //which is stored in 'valKeyDown' at keydown event. $(this).val(valKeyDown); //It is not possible to check this inside 'integerOnly' function as, } //one cannot get the text printed by keydown event }); //(that's why, this is checked on keyup) $('.integerOnly').bind('input propertychange', function(e) { //if user copy-pastes some character value using mouse valKeyUp = this.value; if (!new RegExp('^[0-9]*$').test(valKeyUp)) { $(this).val(valKeyDown); } }); 

Из спецификаций

step="any" или положительное число с плавающей запятой
Задает значение детализации значения элемента.

Таким образом, вы можете просто установить его в 1 :

Установите атрибут step для любого числа с плавающей запятой, например 0,01, и вам хорошо идти.

Просто поместите его в поле ввода: onkeypress='return event.charCode >= 48 && event.charCode <= 57'

Возможно, это не подходит для каждого случая использования, но

  

может сделать прекрасную работу: скрипка .

Проверьте документацию .

Кстати, кажется, что если у вас есть что-то другое, кроме числа в «числовом» вводе, val () и т. Д. Возвращает ”. Я только что поставил чек и, похоже, работал на то, что мне нужно (ограничение буквы и других символов).

 if( var == '' ) { alert( 'Var is not a number' ); } 

Работает с ведущими нулями, десятичными точками и т. Д.

В Future ™ (см. Раздел «Могу ли я использовать» ) на пользовательских агентах, которые представляют вам клавиатуру, вы можете ограничить ввод текста только числовым с помощью input[inputmode] .

  • accepts_nested_attributes_ для неудачной проверки дочерней ассоциации
  • Концепция концепции проверки Struts 2
  • Определите, является ли строка C допустимым int в C
  • Проверка группы переключателей с использованием плагина проверки jQuery
  • jQuery: какой лучший способ ограничить «число» - только вход для текстовых полей? (разрешить десятичные точки)
  • maxlength атрибута текстового поля из DataAnnotations StringLength в Asp.Net MVC
  • Фильтр аутентификации и сервлет для входа в систему
  • Как остановить Chrome от пожелтения полей ввода моего сайта?
  • Mockito: проверка с помощью общих параметров
  • Как использовать Twitter Bootstrap popovers для уведомлений о проверке jQuery?
  • Подтвердите количество элементов has_many в Ruby on Rails
  • Давайте будем гением компьютера.