Проверка ввода HTML5 не работает в IE8 - PullRequest
6 голосов
/ 01 ноября 2011

Здравствуйте добрые люди из интернета, Я взломал это некоторое время ... и видел несколько подобных сообщений, но я не могу понять это:

CSS для проверки поля ввода HTML5 работает в Firefox, Chrome ... но, увы, не в IE8 ... и большая часть моей целевой аудитории будет использовать IE8.

... и да: я использую Modernizr, и я использовал Initializr для получения шаблона страницы и CSS ... Я немного запутался, почему не могу заставить все работать должным образом в IE8.

Вот ссылка на мою тестовую страницу: Тест HTML5 страницы

Поле ввода красного цвета перед правильным вводом, затем проверка просто становится зеленой при вводе действительного номера счета, такого как: 50011111111

Код HTML5 выглядит следующим образом:

<label for="account">Account Number: </label> 
<input id="account" name="inputAccount" 
  placeholder="input billing account number" 
  pattern="/(^500)|^\d{11}" 
  required
  autofocus
  type="text"/>

Любые предложения о том, что, по-видимому, довольно просто исправить, будут очень полезны!

Ответы [ 4 ]

13 голосов
/ 21 февраля 2012

IE просто игнорирует элементы HTML5, потому что не знает о них.Из документов Modernizr

Modernizr проходит через небольшой цикл в JavaScript, чтобы включить различные элементы из HTML5 (а также abbr) для стилизации в Internet Explorer.Обратите внимание, что это не означает, что он внезапно заставляет IE поддерживать элемент Audio или Video, это просто означает, что вы можете использовать section вместо div и стилизовать их в CSS.

Это говорит о том, что Modernizr будетрасскажите IE о новых тегах в HTML5, чтобы вы могли использовать с ними CSS, но на самом деле не заставляйте их ничего делать.Также обратите внимание, что Modernizr не добавляет стили по умолчанию для элементов, поэтому они рекомендуют использовать сброс HTML5 CSS, например, для <section> тегов display: block;.

Что касается проверки вашей формы, то topek правильно объяснил, что Modernizr обнаруживает только возможности браузера, но на самом деле он ничего не делает.Процесс Modernizr заключается в том, что вы используете встроенную функцию тестирования yepnope, чтобы увидеть, может ли браузер пользователя выполнить 'x' (в данном случае проверку формы), а затем условно и асинхронно загрузить скрипт или стиль в "polyfill" (вежливое).способ сказать «используйте javascript для имитации собственного поведения) для него.

В вашем случае вы захотите использовать Modernizr.load() для проверки на Modernizr.input.required и, вероятно, Modernizr.input.autofocus, например, так:

 //the modernizr conditional load function
 Modernizr.load({
     //specify the tests, refer to the Modernizr docs for object names
   test: Modernizr.input.required && Modernizr.input.placeholder,
     //specify what to do if the browser fails the test, can be a function
   nope: 'path/to/polyfill/script',
     //sometimes you need to run some JS to init that script
   complete: function(){ polyfillinitorwhatever(); }
 });

И вот, довольно урезанный Modernizr.load.Хотя я нахожу их документы извилистыми, они на самом деле очень хороши.Каждый раз, когда у меня возникала проблема и я писал в Твиттере Полу Айришу, он отправлял ссылку на документы, где я действительно нашел свой ответ при ближайшем рассмотрении.

Проверка - одна из самых сложных функций HTML5 дляпроизводители браузеров для реализации в качестве стандарта.Хотя мне очень нравится его простота, я продолжаю использовать jQuery.validate во всех случаях, кроме случаев, когда у пользователя есть Chrome или Opera - собственная проверка FF все еще слаба.Я бы порекомендовал вам придерживаться jQuery на данный момент.

3 голосов
/ 13 июня 2012

Недавно я нашел новый плагин jquery.h5form .

Используя это, проверка формы, как в Opera, будет включена во всех браузерах, даже в IE8.

1 голос
/ 01 ноября 2011

IE8 не поддерживает все элементы HTML5, если они есть.Вам нужно иметь аддон для html5 для работы.Одно дополнение - модернизатор

Список браузеров с их оценкой / совместимостью в HTML5

1 голос
/ 01 ноября 2011

Я думаю, что вам все еще не хватает, это html5 polyfill для проверки поля. Вы можете использовать, например: http://ericleads.com/h5validate/

Больше полифилов можно найти по адресу: https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

...