2015-01-20 3 views
5

Я хочу использовать тип ввода номера для своей HTML-формы.Введите тип ввода HTML5 = «число», принимающее тире

К сожалению, он принимает только реальные цифры, без дефиса.

Есть ли способ сделать число ввода принимающих чисел «1234-123456789»?

+1

Значения для входов 'number' всегда должны быть действительными числами с плавающей запятой и поэтому могут содержать только одну тире (то есть знак минуса) перед номером. См. Http://www.w3.org/TR/html5/infrastructure.html#valid-floating-point-number – icke

ответ

4

Вы можете использовать регулярное выражение, по которому будет проверяться значение. Просто введите его в атрибут pattern. Вы также должны изменить свой вход type на text, чтобы использовать его.

<input type="text" pattern="[0-9]+([-\,][0-9]+)?" name="my-num" 
       title="The number input must start with a number and use either dash or a comma."/> 
+3

Уже пробовал это. Но потом я теряю клавиатуру с хорошим номером на мобильных устройствах. – alexwenzel

+0

@alexwenzel Обновите свой вопрос кодом –

8

У меня недавно была та же проблема. Я обошел его, используя type = "tel" вместо type = "text" или type = "number". Используя «tel», я смог получить только цифровую клавиатуру на мобильных устройствах и по-прежнему использовать мой шаблон = «[0-9 \ -] +».

Вот код, который я использовал. Надеюсь, это будет достаточно для того, что вам нужно. Им действительно нужно сделать так, чтобы добавление атрибута pattern переопределяло любой встроенный шаблон, заданный атрибутом type.

<input id='zipcode' name='zipcode' type='tel' pattern="[0-9\-]+" placeholder='Zip-code'> 

Конечно, это будет работать только в том случае, если все, что вам нужно, это тире и, возможно, круглые скобки.

+2

Не будет ли причиной проблемы доступности? Скажут ли читатели о том, что люди будут вводить номер телефона? – Carlin

+0

@ Карлин: Хорошая точка. Это очень хорошо может вызвать проблемы с программами чтения с экрана. Таким образом, это не идеальное решение, но разработчик может решить, является ли это приемлемой жертвой. – metamilo

+0

Спасибо за это, умный маленький взлом. Примечание. Это также, по-видимому, позволяет «/», другой символ не разрешен в числовых вводах. Используя это, вы можете ввести даты ввода, которые используют клавиатуру мобильного телефона. –

Смежные вопросы