Показать сообщение отдельно
  #5 (permalink)  
Старый 08.05.2014, 14:30
Аспирант
Отправить личное сообщение для M-ka Посмотреть профиль Найти все сообщения от M-ka
 
Регистрация: 25.04.2014
Сообщений: 47

$(document).ready(function() {
    $('#email').blur(function() {onMailHandler();}); // запуск по событию blur (я так понял, можно выкинуть)
    //$('#email').on('blur', onMailHandler); //мне так больше нравиться
});

function onMailHandler() {
    var mail = $('#email'),
        hasError = true;
    if(mail.val() != '') {
        var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
        if(pattern.test(mail.val())){
            showMessage('Верно');
            hasError = false;
        } else {
            showMessage('Не верно');
        }
    } else {
        showMessage('Поле email не должно быть пустым');
    }

    function showMessage(mgs) {
        var color = '#569b44';
        if (!msg) {return;}
        if (hasError) {color = '#ff0000';}
        mail.css({'border' : '1px solid ' + color});
        $('#valid').text(mgs);
    }
    return hasError;
}


onMailHandler(); -- запуск ф-ии валидации с любого доступного места, возвтращает true на ошибку... можно переименовать по вашему вкусу или сделать другой возврат для проверки, была ли ошибка...

Вставить вызов перед if (err==0) $(form).submit();
if(onMailHandler()) {err++;} // увеличили счетчик при ответе с наличием ошибки... хотя в коде выше глупо чето с ним делать, просто с false заменить на true при наличии ошибки и не париться (ну или наоборот, ну как вот у меня сделано с hasError)


Вроде как то так, может че пропустил, но уже мелочи.
Валидации не трогал и логику, просто разделил для более удобного чтения, правда не уверен в куске "1px solid ' + color", если цвет будет приходить но все же не ставиться, тогда сделать иф с полным прописыванием параметров ну или разделить, отдельно установив толщину, тип и цвет бордера... Просто мне не приходилось с ходу так собирать бордеры, но должно работать

Последний раз редактировалось M-ka, 08.05.2014 в 14:47.
Ответить с цитированием