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

Помогите новичку!
Здравствуйте Все! Начал изучать JavaScript, jQuery... Ну и решил начать с модернизации моего сайта, а именно с создания более красивой и грамотной регистрации (проверки e-mail для начала) с использование JavaScript, потом наткнулся на JQuery и решил объединить красивое с полезным.
Идея такова, e-mail считается верным, если он прошел проверку в регулярных выражениях, а также если его нет в базе данных, вот что у меня получилось:
function checkMail()
{
	var mailValue = document.getElementById("e_mailEdit");
	var mailExp = /^[a-zA-Z0-9_\.\-]+\@[a-zA-Z0-9\.\-]+\.[a-zA-Z0-9]{2,6}$/;
	checkRes = mailValue.value.match(mailExp);
	if(checkRes != null)
	{
		//Обращаемся к серверу для проверки
		$(document).ready(function() {
			$('#e_mailEdit').blur(function() {
				jQuery.post('/checkReg.php',{e_mailEdit: $('#e_mailEdit').val()},
				function(data) {
					if(data.success == true)
					{
						$('#checkMailDiv').html(data.message);
						
					}
					else if(data.success == false)
					{
						$('#checkMailDiv').html(data.message);
					};
				},'json');
			});
		});
	}
	else if(checkRes == null)
	{
		//Ищем <div> в который будет выведен отрицательный ответ
		$('#checkMailDiv').html("You should check e-mail and try again.");
	}
}
</script>


<form method="post" name="regForm" action="index.php">
<table align="center" cellpadding="0" cellspacing="0" width = "400">
<tr>
	<td width="15%">E-mail:</td>
    <td width="5%">*</td>
	<td width="40%"><input type="text" id = "e_mailEdit" onBlur="checkMail();"></td>
    <!-- В базе данных e-mail является уникальным. Если пользователь ввел уже зарегистрированый почтовый ящик предложить восстановить пароль и вывести сообщение об ошибки -->
    <td width="40%"><div id="checkMailDiv"></div></td>
</tr>
</table>
</form>


<?php
	include "connect.php";
	if($_POST)
	{
		if(!empty($_POST['e_mailEdit']))
		{
			mailCheck($_POST['e_mailEdit']);
		}
		else
		{
			$mailEmpty = "You must enter e-mail address";
			echo $mailEmpty;
		}
	}
	
	function mailCheck($mailIn)
	{
		//$mc = db_connect();
		//$result = mysql_query("SELECT id FROM users WHERE e_mail = '"+$mailIn+"'",$mc);
		//Отлаживал скрипт, временно кбрал проверку на существование в базе данных
		if(1>0)
		{
			$data['success'] = true;
			$data['message'] = 'All right';
			
		}
		else
		{
			$data['success'] = false;
			$data['message'] = "This e-mail already used...";
		}
		echo json_encode($data);
	}

?>


Теперь сама проблема: после того, как от сервера приходит положительный ответы All right, после того изменяю е-mail делая его не корректным, промелькивает надпись "You should check e-mail and try again" (сработала проверка на то что e-mail не прошел проверку на регулярное выражение и снова надпись становится All right). Помогите разобраться. Спасибо большое.
Ответить с цитированием