Я использую плагин jQuery Validation для проверки формы на моем сайте.
http://docs.jquery.com/Plugins/Validation
Я также использую следующий код для обеспечения поддержки Placeholder для браузеров, которые делаютне поддерживает атрибут HTML5 placeholder=""
.
// To detect native support for the HTML5 placeholder attribute
var fakeInput = document.createElement("input"),
placeHolderSupport = ("placeholder" in fakeInput);
// Applies placeholder attribute behavior in web browsers that don't support it
if (!placeHolderSupport) {
$('[placeholder]').focus(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
input.removeClass('placeholder');
}
}).blur(function() {
var input = $(this);
if (input.val() == '') {
input.addClass('placeholder');
input.val(input.attr('placeholder'));
}
}).blur().parents('form').submit(function() {
$(this).find('[placeholder]').each(function() { //line 20
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
});
});
}
Когда я отправляю свою форму, происходит следующее:
В браузерах, которые поддерживают атрибут placeholder
, функция validate()
срабатывает, и все работает как положено.
В браузерах, которые не поддерживают атрибут placeholder
, строки 20-25 очищают все "заполнители", а затем срабатывает функция validate()
.Если ошибок нет, страница отправляется, и все работает, как положено.
В неподдерживаемых браузерах, в случае ошибок, соответствующие поля применяются class="error"
, как обычно - нотекст заполнителя не возвращается, пока не произойдет событие blur()
в определенном поле.Это оставляет эти поля пустыми - и так как нет меток (только атрибут placeholder
), пользователям остается угадывать, что каждое пустое поле должно содержать, пока не произойдет событие blur()
.
ДругоеПроблема, которая существует в неподдерживаемых браузерах, заключается в том, что поскольку исправление заполнителя изменяет атрибут value
для отображения заполнителя, поля, помеченные как обязательные, проходят проверку при сбое.
Кажется, простого способа использования нетплагин Validation с кодом поддержки заполнителя.
Я хочу либо изменить код поддержки заполнителя, либо добавить функцию submitHandler: {}
в качестве параметра функции validate()
, чтобы она работала в неподдерживаемых браузерах.