Как вставить правильно функцию?
Вот есть первый код, который отвечает за проверку поля 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()"> |
Помогите, очень срочно нужно(
|
Iceman77,
вынеси ф-ю валидации мейла отдельным обработчиком, а его запускай по блюру или чему там тебе нужно с любого места.... if($(this).val() != '') {var pattern ........ $('#valid').text('Поле email не должно быть пустым'); ....... --- в отдельную ф-ю |
Я в этом не особо понимаю. По этому прошу помощи тут)
|
$(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", если цвет будет приходить но все же не ставиться, тогда сделать иф с полным прописыванием параметров ну или разделить, отдельно установив толщину, тип и цвет бордера... Просто мне не приходилось с ходу так собирать бордеры, но должно работать |
Цитата:
Цитата:
--- я так это читаю |
nerv_,
+1, где то уже писали подобное С наличием ответа, думаю его больше не увидим на форуме... |
Часовой пояс GMT +3, время: 11:51. |