Показать сообщение отдельно
  #1 (permalink)  
Старый 22.02.2010, 22:21
Аспирант
Отправить личное сообщение для igsavenko Посмотреть профиль Найти все сообщения от igsavenko
 
Регистрация: 15.01.2010
Сообщений: 83

Странная ситуация.
Здравствуйте всем! Делаю регистрацию на JavaScript используя jQuery вот такой вопрос. С JS работаю буквально несколько недель, вот пытаюсь разобраться. Есть несколько полей ввода где на событие onBlur (показано ниже) идет проверка на корректность и присутствие в базе данных.

Проблема следующая:
$(document).ready(function() {

	$('#aboutLogin').hide();
	$('#checkName').hide();
	$('#checkSurname').hide();	
	$('#result_check').hide();
	
	$('#checkMailDiv').hide();
    $('#e_mailEdit').blur( checkMail );
	$('#checkLoginDiv').hide();
    $('#loginEdit').blur( checkLogin );
})
;

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

Форма принимается следующим образом:
<form method="post" name="regForm"  onsubmit="check_all(); return false;">
...
//Изначально этот див скрыт и если при проверки всех полей регистрации возникает ошибка то этот div становится видимый (функция проверки ниже)
<div id = "result_check"><font color="#FF0000">При заполнении данных возникла ошибка</font></div>
<input type="submit" value="Продолжить регистрацию">
</form>


function check_all()
{
	var chN = checkName();
	var chM = checkMail();
	var chS = checkSurname();
	var chL = checkLogin();
	if(!chN || !chM || !chL || !chS)
		$('#result_check').fadeIn();
	else
	{
		$('#result_check').fadeOut();
	}
}

Вот изображение до нажатия на кнопку продолжения регистрации:

После нажатия:

Как я уже писал каждая функция проверки работает нормально но когда я нажимаю на кнопку Продолжить регистрацию, почему то возле поля с e-mail появляется надпись Ошибка при вводе. Данная ошибка должна появляться только в том случае если e-mail введен не верно, а именно не прошел проверку на регулярное выражение.

Вот функция проверки e-mail:
function checkMail() {
    var mailValue = this.value;
    var mailExp = /^[a-zA-Z0-9_\.\-]+\@[a-zA-Z0-9\.\-]+\.[a-zA-Z0-9]{2,6}$/;
 	$('#checkMailDiv').fadeOut();
    if ( mailExp.test(mailValue) ) {
        //Обращаемся к серверу для проверки
		$.ajax({ // первый ajax запрос, определяющий количество данных
      		url: "check_mail.php",
      		global: false,
			type: "POST",
      		beforeSend: function(){
      			$('#checkMailDiv').html('<img alt="" border="0" src="/images/animation.gif" align="absmiddle"></img>').fadeIn();
      		},
			data: {mailEdit: $('#e_mailEdit').val()}, // Передаём страницу для запроса к mysql
      		dataType: "json",
      		success: function (data)
			{
				if(data.success == true)
				{
					$('#checkMailDiv').html("<img title='"+data.message+"' border='0' src='images/"+data.images+"' align='absmiddle'></img>").fadeIn();
					return true;
				}
				else
				{
					$('#checkMailDiv').html("<img title='"+data.message+"' border='0' src='images/"+data.images+"' align='absmiddle'></img> E-mail занят другим пользователем").fadeIn();
					return false;
				};
			}
			});
    } else {
        //Ищем <div> в который будет выведен отрицательный ответ
       $('#checkMailDiv').html("<img alt='Пожалуйста, проверьте ваш e-mail!' border='0' src='/images/reg_error.png' align='absmiddle'>Ошибка при вводе (Скрипт).").fadeIn();
		return false;
    }
}


Подскажите пожалуйста почему так происходит? Почему после принятия формы, функция проверки e-mail не срабатывает и возвращает false, хотя функция проверки аналогична она срабатывает. Спасибо!
Ответить с цитированием