Здравствуйте всем! Делаю регистрацию на 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, хотя функция проверки аналогична она срабатывает. Спасибо!