Прежде всего, я создатель webshims lib (одного из тех полифилов, который больше не поддерживается). Чтобы ответить на ваш вопрос:
Стоит ли создавать заполнение форм для проекта?
Нет, это действительно сложно сделать только для одного проекта. Ну, я сделал это просто потому, что хочу использовать современные технологии.
Стоит ли использовать для проекта многозаполнение форм, как webshims lib?
Да, абсолютно! И вот почему:
1. Хорошая стандартизированная декларативная разметка API
После включения веб-страниц и сценариев следующее:
//polyfill forms (constraint validation) and forms-ext (date, range etc.)
$.webshims.polyfill('forms forms-ext');
Вы можете просто записать свои виджеты и ограничения в форму:
<input type="date" />
<input type="date" min="2012-10-11" max="2111-01-01" />
<input type="range" disabled />
<input type="email" required placeholder="Yo you can use a placeholder" />
Это создаст 3 разных виджета, каждый из которых настроен по-разному. Никаких дополнительных JS не требуется, просто стандартизированный, чистый и компактный код.
2. Стандартизированный DOM-API
То же самое относится и к DOM API. Вот только два примера: Объединение двух полей даты и Объединение поля диапазона с полем даты .
3. работает без JS в современных браузерах
Изящно ухудшается в старых браузерах и хорошо работает в современных.
4. Меньший размер файла в современных браузерах
Особенно хорошо для мобильных устройств (например, в iOS 5, Blackberry есть поддержка даты)
5. Лучший UX [в основном мобильный]
Лучший мобильный UX (лучший интерфейс ввода для сенсорного ввода, лучшая производительность, подходит для системы), если вы его используете: type = "email" , type = "number" и type = "date" / type = "range"
Но все же, как насчет настраиваемости?
Я разработчик в более крупном агентстве, и вы абсолютно правы, большинство клиентов, и большинство дизайнеров не допустят больших различий, но я все еще хочу использовать современные технологии, что означает, что webshims lib может дать вам лучшее из обоих миров .
Настройка проверки ограничения
Полизаполняющая часть
//polyfill constraint validation
$.webshims.polyfill('forms');
Настройка пользовательского интерфейса для сообщения об ошибке:
//on DOM-ready
$(function(){
$('form').bind('firstinvalid', function(e){
//show the invalid alert for first invalid element
$.webshims.validityAlert.showFor( e.target );
//prevent browser from showing native validation message
return false;
});
});
генерирует следующую разметку:
<!-- the JS code above will generate the following custom styleable HTML markup for the validation alert -->
<span class="validity-alert-wrapper" role="alert">
<span class="validity-alert">
<span class="va-arrow"><span class="va-arrow-box"></span></span>
<span class="va-box">Error message of the current field</span>
</span>
</span>
Настройка стиля недопустимого / действительного поля формы:
.form-ui-invalid {
border-color: red;
}
.form-ui-valid {
border-color: green;
}
Настройка текста предупреждения о сроке действия:
<input required data-errormessage="Hey this is required!!!" />
А теперь какой смысл:
- все еще работает без JS
- современные браузеры загружают только код настройки (3kb min / gzip), а старые браузеры действительно загружают дополнительный API (около 13kb min / gzip) (формы включают в себя намного больше, чем просто API проверки ограничений, например, есть также автофокус, заполнитель, вывод и т. д.)
А что с вашим особым примером настройки поля даты?
Нет проблем:
//configure webshims to use customizable widget UI in all browsers
$.webshims.setOptions('forms-ext', {
replaceUI: true
});
$.webshims.polyfill('forms forms-ext');
А также здесь:
- все еще работает без JS в современных браузерах
- современные браузеры загружают только интерфейс и клей UI-API, но не DOM-API (valueAsNumber, valueAsDate ...)
А теперь самое лучшее:
//configure webshims to use customizable widget UI in all non mobile browsers, but a customizable one in all desktop and all non-capable mobile browsers
$.webshims.setOptions('forms-ext', {
//oh, I know this is bad browser sniffing :-(
replaceUI: !(/mobile|ipad|iphone|fennec|android/i.test(navigator.userAgent))
});
$.webshims.polyfill('forms forms-ext');
- меньший размер файла и лучший UX для мобильных браузеров (большинство клиентов и большинство дизайнеров будут любить вас за использование другого пользовательского интерфейса на мобильных устройствах !!!)
- все еще работает без JS в современных браузерах
- современные браузеры загружают только UI и клей UI-API, но не DOM-API (valueAsNumber, valueAsDate ...)