Быстрая валидация формы на jQuery без плагинов
Все поля для валидации необходимо разметить по принципу:
<input class="js-validate" data-errmess="Текст ошибки" data-rule="Тип проверки" />
- validate.js
function checkInvalidInput($object, errMessage) { $object.focus(); alert(errMessage); return false; } function checkForm($form) { var isValid = true; var $fields = $form.find('.js-validate'); if ($fields.length) $fields.each(function() { var errMessage = $(this).data('errmess'); switch ($(this).data('rule')) { case 'text': if(isValid && !$(this).val().match(/(.+)/)) { isValid = checkInvalidInput($(this), errMessage); } break; case 'radio': if(isValid) { var $radios = $form.find('input[type="radio"][name="' + $(this).attr('name') + '"]'); var $checkedRadios = $radios.filter(':checked'); if(!$checkedRadios.length) { isValid = checkInvalidInput($(this), errMessage); } } break; case 'email': if(isValid && !$(this).val().match(/^[0-9A-Za-z\._-]+@([0-9a-z\._-]+\.)+[a-z]{2,4}$/)) { isValid = checkInvalidInput($(this), errMessage); } break; case 'captcha': if(isValid && !$(this).val().match(/(.+)/)) { isValid = checkInvalidInput($(this), errMessage); } break; case 'custom1': if (isValid) { if(!isSelectChecked($(this), 8)) { isValid = checkInvalidInput($(this), errMessage); } } } }); return isValid; } // проверка select на значение (не должно совпадать с дефолтным) function isSelectChecked($input, defaultValue) { var isValid = $input.val() != defaultValue; return isValid; } function checkSubmitForm() { var form = $('.js-download'); // выбираем форму для валидации var isValid = checkForm(form); if (isValid) yaCounter_xxx.reachGoal('downcel'); // форма отправлена, цель-достигнута return isValid; }
Вешаем на сабмит обработчик:
<form action="" method="post" onsubmit="return checkSubmitForm();" class="js-download">