Отправка формы после валидации
Помогите, 2 часа уже мучаюсь(
Как по-нормальному убрать обработчик submit с формы? Он убирается, но форма отправляется со второго раза (т.е. 1й раз при нажатии на submit ничего не происходит). http://jsfiddle.net/gwnhzez9/2/ |
Надо не аяксом отправить, т.е. убрать обработчик .on()
|
$form.on('submit', function(e) { var isValid = твоиПроверки(); if (!isValid) e.preventDefault(); }); |
validateFields лучше чтоб возвращала true если все ок. Так логичнее.
|
Ты не правильно это делаешь. У тебя ущербная разметка. Учись:
<style> .site-form label{display: block;} </style> <form id="feedback-form" class="site-form no-ajax"> <label> <span class="field-title">Представьтесь, пожалуйста</span> <input type="text" name="NAME" required> </label> <label> <span class="field-title">Контактный E-mail</span> <input type="email" name="EMAIL" required> </label> <label> <span class="field-title">Номер контактного телефона</span> <input type="tel" class="phone" name="PHONE" required> </label> <label> <span class="field-title">Ваше письмо</span> <textarea name="MESSAGE" required></textarea> </label> <div class="submit"> <input type="submit" name="submit" value="Отправить письмо"> </div> </form> Попробуй заслать без значений! В новых браузерах все без всяких скриптов будет работать. В старых нужен костыль типа твоего скрипта. Хотя есть и готовые, не кривые, в отличие от твоего. |
Вот однажды начал было делать простой скрипт кастомизации (заодно и полифилл) html5 валидации:
http://jsfiddle.net/danya_postfactum/p1zde8v3/ К сожалению не сделал вывод сообщения об ошибке. Есть: - поддержка required и pattern - валидация поля по мере ввода - добавление css-класса при валидации - передача фокуса первому неверному полю - поддержка кастомных правил валидации (через js код, не через разметку - не знаю хорошо это или плохо) - независимость от сторонних либ Минусы: - зависимость от classList.js и addEventListener.js - какие-то траблы вроде были с IE старыми - не сделаны сообщения об ошибке - не сделана дефолтная валидация поля типа email (и наверно еще каких-то) - необходимость запуска функции для инициализации (хотя это не всегда минус) Эт скорее для меня памятка. |
Цитата:
1. В старых ie все-таки нужен скрипт. 2. Сообщение об ошибке должно быть таким, каким его нарисовал дизайнер, а не таким, какой его браузер выведет. 3. Из скрипта и верстки я выложил только часть, чтобы было понятно, о чем речь. Там и добавление классов, и фокус на поле с ошибкой и много всего. Можешь называть костылем, но он работает так, как мне нужно. 4. Не тебе меня учить. И в данном случае ущербна твоя разметка. Не следует так завышать ЧСВ, а то создается ощущение, что у тебя болт меньше, чем девушка хочет. |
Цитата:
|
Цитата:
|
beebop, читай мое последующее сообщение. Там решение двух из трех проблем.
Цитата:
Цитата:
В свой корявый FormValidator завтра постараюсь добавить сообщение об ошибке и исправить косяк с IE. Хотя addEventListener и classList - спорный момент, но jQuery - однозначно не вариант. Стараюсь выпиливать эту дрянь отовсюду (да, я знаю, это не дрянь, это палочка-выручалочка:) ). |
Часовой пояс GMT +3, время: 00:09. |