Странная ситуация.
Здравствуйте всем! Делаю регистрацию на 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, хотя функция проверки аналогична она срабатывает. Спасибо! |
Ну в общем я разобрался... только вот куда тему девать? :)
function checkMail() { var mailValue = this.value; } Проблема была в этой строчке! Еще один вопрос в до гонку, как теперь мне данные которые в форме, передать в другой php скрипт и перейти к странице этого скрипта. Я такого никогда не делал, что форма обрабатывается таким способом! Подскажите? |
В тег form добавьте атрибут action. Должно выглядеть примерно так:
<form method="post" action="drugoj.php" name="regForm" onsubmit="check_all(); return false;"> |
Такой вариант не будет работать, так как у формы есть 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;
}
}
|
Можно onsubmit="var a = check_all(); return a;" заменить на: onsubmit="return check_all(); "
|
Тоже верно... спасибо!
|
| Часовой пояс GMT +3, время: 07:02. |