Доброе время суток. Для начала опишу задачу, и трудность с которой я столкнулся. Есть форма авторизации. Код (PHP): <form class="form" action="" id="auth" method="post"> поля формы... <input class="button" type="submit" value="Войти"> </form> Обработчик формы на этой же странице, соответственно результат всевозможных проверок выводится сразу под ней. Форма где-то чуть ниже середины страницы, мне необходимо сделать какой-то плавный якорь к которому страница плавно подъезжает вниз при нажатии на кнопку "Войти", так как на некоторых разрешениях результаты проверки заполнения уезжают в оверфлоу. Для начала просто добавил: Некрасивое дергание к форме при выполнении... Пробовал вот как-то так, но в таком варианте у меня игнорируется php обработчик, который сразу за формой: Код (PHP): <form class="form scroll" action="#form" id="auth" method="post"> поля формы... <input class="button" type="submit" value="Войти"> </form> <div id="form"> ... обработчик пхп ... <script> $('.scroll').click(function(event) { event.preventDefault(); var href=$(this).attr('href'); var target=$(href); var top=target.offset().top; $('html,body').animate({ scrollTop: top }, 400); }); </script> Может быть есть варианты более адекватнее?
Конечно, у меня сейчас форма при нажатии кнопки плавно скролится к нужному месту (сначала тестил на простых ссылках с якорями), но ничего не происходит, из чего я сделал вывод, что php обработчик обходится стороной.
у меня всё работает Код (PHP): <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="POST" action="?#test"> <input type="submit"> </form> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <a name="test"> <h1>title</h1> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> </body> </html>
У меня мой вариант работает - плавный скролл к нужному месту при нажатии кнопки есть, я к тому, что не выполняется пхп обработчик самой формы (правильность заполнения полей, авторизация), кнопка тупо красиво скролит страницу и ничего более. Обработчик расположен на той же странице сразу после формы Структура такая (пример в первом сообщении):
У меня даже до отправки формы дело не доходит. Мало того (вчера не заметил) в таком варианте еще и радио кнопки не работают.. Вот мой тест: http://avzp.com.ua/1/test.php Код (PHP): <html> <head> <title>123</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> </head> <body> <br> <br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br> <div id="form"></div> //якорь <form class="form scroll" action="#form" id="auth" method="post"> <input name="login" id="login" class="textbox" placeholder="login:" type="text" maxlength="30"/><br><br> <input name="pass" id="pass" class="textbox" placeholder="pass" type="password" maxlength="30"/><br> <p> <label for="sch"><input type="radio" checked="checked" name="chs" value="sch" id="sch"/>opt1</label><br/> <label for="th"><input type="radio" name="chs" value="th" id="th"/>opt2</label><br/> </p> <input class="button" type="submit" value="enter"></a> [url="registration"]reg[/url] </form> <br /> <? if(isset($_POST['login']) && isset($_POST['pass'])) { echo "проверки, авторизации и т.д."; } ?> <br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br> <script> $('.scroll').click(function(event) { event.preventDefault(); var href=$(this).attr('action'); var target=$(href); var top=target.offset().top; $('html,body').animate({ scrollTop: top }, 1000); }); </script> </body> </html>
можно отправлять форму через ajax, или после submit в php вывести $('.scroll'). $('.scroll').click удалить
Вывел форму на страницу без js, форму отправили на php обработчик, ты через if проверил, что пришёл POST и вывел скрипт который при загрузки страницы сделает тебе animate. http://phpfaq.ru/na_tanke