Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.05.2014, 11:48
Новичок на форуме
Отправить личное сообщение для Iceman77 Посмотреть профиль Найти все сообщения от Iceman77
 
Регистрация: 06.05.2014
Сообщений: 5

Как вставить правильно функцию?
Вот есть первый код, который отвечает за проверку поля email. Он работает мгновенно, когда убирается фокус.
Так- же у меня есть второй js код который проверяет вобщем все поля на заполненность.

Проблема заключается, в том, что нужно подключить проверку емаил во 2 код. Что проверка не шла емали сразу как фокус убирается, а по клику кнопки оплатить.

$(document).ready(function() {
        $('#email').blur(function() {
            if($(this).val() != '') {
                var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
    if(pattern.test($(this).val())){
        $(this).css({'border' : '1px solid #569b44'});
    $('#valid').text('Верно');
    } else {
        $(this).css({'border' : '1px solid #ff0000'});
    $('#valid').text('Не верно');
    }
    } else {
        $(this).css({'border' : '1px solid #ff0000'});
    $('#valid').text('Поле email не должно быть пустым');
    }
    });
    });





function trim( str, charlist ) { // аналог PHP функции trim()
    charlist = !charlist ? ' \\s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
    return str.replace(re, '');
}

function checkOut() { // Наша функция

    var form = '#form_pay'; // идентификатор (#id) или класс (.class) формы
    var err = 8;	// количество проверяемых полей, input'ов и textarea

    $('input[type=text]', $(form)).each(function (indx) {   // проверяем input'ы
        if (trim($(this).attr('value')).length < $(this).attr('minlength')) { // проверка количества символов
            $(this).attr('id', 'err');	// вешаем идентификатор #err, в качестве стилизации рамки
            err++;
        }

        else $(this).removeAttr('id'); err--;  // в этом элементе нет ошибок, чистим идентифкатор #err, уменьшаем счетчик ошибок
    });

    if (err==0) $(form).submit(); // Если нет ошибок - отправляем данные.


}



<input type="button" class="button_pay" value="Оплатить" onclick="checkOut()">
Ответить с цитированием
  #2 (permalink)  
Старый 08.05.2014, 12:48
Новичок на форуме
Отправить личное сообщение для Iceman77 Посмотреть профиль Найти все сообщения от Iceman77
 
Регистрация: 06.05.2014
Сообщений: 5

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

Iceman77,
вынеси ф-ю валидации мейла отдельным обработчиком, а его запускай по блюру или чему там тебе нужно с любого места....
if($(this).val() != '') {var pattern ........ $('#valid').text('Поле email не должно быть пустым'); ....... --- в отдельную ф-ю

Последний раз редактировалось M-ka, 08.05.2014 в 13:03.
Ответить с цитированием
  #4 (permalink)  
Старый 08.05.2014, 13:06
Новичок на форуме
Отправить личное сообщение для Iceman77 Посмотреть профиль Найти все сообщения от Iceman77
 
Регистрация: 06.05.2014
Сообщений: 5

Я в этом не особо понимаю. По этому прошу помощи тут)
Ответить с цитированием
  #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.
Ответить с цитированием
  #6 (permalink)  
Старый 08.05.2014, 15:07
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Iceman77
Помогите, очень срочно нужно(
надо сдать работу и получить деньги

Сообщение от Iceman77
Я в этом не особо понимаю. По этому прошу помощи тут)
поэтому хочу, чтобы за меня сделали на халяву

---
я так это читаю
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #7 (permalink)  
Старый 08.05.2014, 15:27
Аспирант
Отправить личное сообщение для M-ka Посмотреть профиль Найти все сообщения от M-ka
 
Регистрация: 25.04.2014
Сообщений: 47

nerv_,
+1, где то уже писали подобное
С наличием ответа, думаю его больше не увидим на форуме...

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно прописать полученные значения с сервера? Dimaz jQuery 0 07.12.2012 19:46
как правильно отслеживать вставку html() bombascter jQuery 15 20.11.2012 09:47
Как правильно прицепить обработку события slowklg Events/DOM/Window 6 15.03.2012 16:20
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32