Странная ситуация.
Здравствуйте всем! Делаю регистрацию на 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, время: 16:03. |