Показать сообщение отдельно
  #17 (permalink)  
Старый 11.01.2015, 16:47
Интересующийся
Отправить личное сообщение для beebop Посмотреть профиль Найти все сообщения от beebop
 
Регистрация: 11.11.2012
Сообщений: 22

Сообщение от danik.js Посмотреть сообщение
jQuery - не обсуждаю.
noscript - не холивар. Он есть, его используют. Есть качественные сайты, разработчики которых знают об этом. Есть кривые сайты и те которые не знают или попросту плюют.
Че тут холиварить то? Это просто факты.



form.noValidate = true
По поводу noscript поясню. Если в дизайне много функционала, который без js не сможет быть реализован, то нет смысла делать поддержку пользователей с отключенным js. Эти вещи сделаны не для красоты, а для удобства (всплывающие окна, та же валидация, ajax запросы). Конечно, можно добавить поддержку таких пользователей, но:
1. такие люди - исключение, и не факт, что они что-то будут покупать на сайте, если это магазин или сайт услуг.
2. это требует времени, но доплачивать не каждый заказчик захочет.

Конечно, если я буду делать сайт для себя, то сделаю возможность его функционирования без скриптов. Может быть.



Сообщение от danik.js Посмотреть сообщение
Ты сделал акцент на том что полей было много. Этот фактор не имеет никакого влияния. Причина может быть только одна - прерывание потока выполнения кода, то есть exception (предположил что ума хватило не втыкнуть return куда попало). Или ты знаешь другие причины? Что ж, приведи пример.
Вообще я сейчас покопался и не нашел сайт, на котором была эта проблема) Но дело точно не в ошибке. Скорее всего там что-то аяксом должно было вернуться до отправки.

Цитата:
Смысл в декларативном описании правил валидации, причем стандартизированном. А также как бонус - поддержка noscript. Это бонус - и он ничего не стоит.

Какая тебе блин разница как писать
if ($input.parent().hasClass('required'))

или
if ($input.attr('required'))
Вот именно - разницы никакой. Поэтому я сделал так. Просто не надо дополнительно писать
form.noValidate = true

А стандартизованная валидация не всегда подходит. Для того же телефона. Нужно, чтобы он был в формате +7xxxxxxxx.
Ну и кроме email, tel и url есть много типов полей, которые стандартами w3 не предусмотрены. Для них все равно придется писать валидатор.

У меня вместо type в таком случае используется класс (.phone, .email и т.д.). Не вижу ничего плохого в таком решении, оно гораздо более универсально, чем использование type. Опять же для совсем специфичных полей можно использовать data атрибуты (недавно надо было сделать ввод чисел, кратных 25). Этого ведь не предусмотрено в w3?

Цитата:
$form.on('submit', function(e) {
    e.preventDefault();
    var form = this;
    asyncValidation(function() {
        form.submit();
    });
});

Вот тут и всплывает то, что ты совершенно не понял проблему.
При событии form.submit() у тебя опять вызовется весь этот код
$form.on('submit', function(e) {
    e.preventDefault();
    var form = this;
    asyncValidation(function() {
        form.submit();
    });
});

И так будет до бесконечности. Ты его хоть пробовал запустить? Надо ипользовать .off(), чтобы убрать обработчик.

Последний раз редактировалось beebop, 11.01.2015 в 16:51.
Ответить с цитированием