Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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, хотя функция проверки аналогична она срабатывает. Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2010, 23:39
Аспирант
Отправить личное сообщение для igsavenko Посмотреть профиль Найти все сообщения от igsavenko
 
Регистрация: 15.01.2010
Сообщений: 83

Ну в общем я разобрался... только вот куда тему девать?
function checkMail() {
var mailValue = this.value;
}
Проблема была в этой строчке!

Еще один вопрос в до гонку, как теперь мне данные которые в форме, передать в другой php скрипт и перейти к странице этого скрипта. Я такого никогда не делал, что форма обрабатывается таким способом! Подскажите?

Последний раз редактировалось igsavenko, 22.02.2010 в 23:45.
Ответить с цитированием
  #3 (permalink)  
Старый 23.02.2010, 00:02
Аспирант
Отправить личное сообщение для limonad Посмотреть профиль Найти все сообщения от limonad
 
Регистрация: 22.01.2010
Сообщений: 51

В тег form добавьте атрибут action. Должно выглядеть примерно так:
<form method="post" action="drugoj.php" name="regForm"  onsubmit="check_all(); return false;">
Ответить с цитированием
  #4 (permalink)  
Старый 23.02.2010, 08:00
Аспирант
Отправить личное сообщение для igsavenko Посмотреть профиль Найти все сообщения от igsavenko
 
Регистрация: 15.01.2010
Сообщений: 83

Такой вариант не будет работать, так как у формы есть onsubmit="check_all(); return false;", а конкретнее return false.
Сделал следующее:
<form method="post" name="regForm" action = "step2.php"  onsubmit="var a = check_all(); return a;">

И в функции добавил:
function check_all()
{
 var chN = checkName();
 var chM = checkMail();
 var chS = checkSurname();
 var chL = checkLogin();
 if(!chN || !chM || !chL || !chS)
 {
       $('#result_check').fadeIn();
       return false;
  }
  else
  {
       $('#result_check').fadeOut();
      return true;
  }
}

Последний раз редактировалось igsavenko, 23.02.2010 в 08:07.
Ответить с цитированием
  #5 (permalink)  
Старый 23.02.2010, 09:09
Аспирант
Отправить личное сообщение для limonad Посмотреть профиль Найти все сообщения от limonad
 
Регистрация: 22.01.2010
Сообщений: 51

Можно onsubmit="var a = check_all(); return a;" заменить на: onsubmit="return check_all(); "
Ответить с цитированием
  #6 (permalink)  
Старый 23.02.2010, 10:04
Аспирант
Отправить личное сообщение для igsavenko Посмотреть профиль Найти все сообщения от igsavenko
 
Регистрация: 15.01.2010
Сообщений: 83

Тоже верно... спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странная ошибка в jquery-1.2.6.js (я в ступоре) mindwork jQuery 15 15.05.2009 17:27