За последние 24 часа нас посетили 17452 программиста и 1228 роботов. Сейчас ищут 1532 программиста ...

плавный скролинг при нажатии на кнопку (шизофрения)

Тема в разделе "Вопросы от блондинок", создана пользователем sowelanes, 20 мар 2015.

  1. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Доброе время суток.
    Для начала опишу задачу, и трудность с которой я столкнулся.
    Есть форма авторизации.
    Код (PHP):
    1. <form class="form" action="" id="auth" method="post">
    2. поля формы...
    3. <input class="button" type="submit" value="Войти">
    4. </form> 
    Обработчик формы на этой же странице, соответственно результат всевозможных проверок выводится сразу под ней.
    Форма где-то чуть ниже середины страницы, мне необходимо сделать какой-то плавный якорь к которому страница плавно подъезжает вниз при нажатии на кнопку "Войти", так как на некоторых разрешениях результаты проверки заполнения уезжают в оверфлоу.

    Для начала просто добавил:
    Некрасивое дергание к форме при выполнении...

    Пробовал вот как-то так, но в таком варианте у меня игнорируется php обработчик, который сразу за формой:
    Код (PHP):
    1. <form class="form scroll" action="#form" id="auth" method="post">
    2. поля формы...
    3. <input class="button" type="submit" value="Войти">
    4. </form>
    5.  
    6. <div id="form">
    7.  
    8. ...
    9. обработчик пхп
    10. ...
    11.  
    12. <script>
    13.         $('.scroll').click(function(event) {
    14.             event.preventDefault();
    15.             var href=$(this).attr('href');
    16.             var target=$(href);
    17.             var top=target.offset().top;
    18.             $('html,body').animate({
    19.               scrollTop: top
    20.             }, 400);
    21.             });
    22. </script>    
    Может быть есть варианты более адекватнее?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    подключил ява библию в head ?
     
  3. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Конечно, у меня сейчас форма при нажатии кнопки плавно скролится к нужному месту (сначала тестил на простых ссылках с якорями), но ничего не происходит, из чего я сделал вывод, что php обработчик обходится стороной.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    у меня всё работает

    Код (PHP):
    1. <!DOCTYPE HTML>
    2. <html>
    3. <head>
    4.     <meta charset="UTF-8">
    5.     <title></title>
    6. </head>
    7. <body>
    8. <form method="POST" action="?#test">
    9.     <input type="submit">
    10. </form>
    11.  
    12. <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>
    13. <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>
    14. <a name="test">
    15. <h1>title</h1>
    16. <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>
    17. <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>
    18. <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>
    19. <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>
    20. </body>
    21. </html> 
     
  5. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    У меня мой вариант работает - плавный скролл к нужному месту при нажатии кнопки есть, я к тому, что не выполняется пхп обработчик самой формы (правильность заполнения полей, авторизация), кнопка тупо красиво скролит страницу и ничего более. Обработчик расположен на той же странице сразу после формы
    Структура такая (пример в первом сообщении):
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ну так посмотри phpinfo() что там у тебя происходит после отправки формы
     
  7. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    У меня даже до отправки формы дело не доходит. Мало того (вчера не заметил) в таком варианте еще и радио кнопки не работают..
    Вот мой тест:
    http://avzp.com.ua/1/test.php

    Код (PHP):
    1. <html>
    2.     <head>
    3.         <title>123</title>
    4.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    5.         </head>
    6.     <body>    
    7. <br>
    8. <br><br><br><br><br><br><br><br><br><br><br>
    9. <br><br><br><br><br><br><br><br><br><br><br>
    10.  
    11. <div id="form"></div> //якорь
    12.  
    13. <form class="form scroll" action="#form" id="auth" method="post"> 
    14. <input name="login" id="login" class="textbox" placeholder="login:" type="text" maxlength="30"/><br><br>
    15. <input name="pass" id="pass" class="textbox" placeholder="pass" type="password" maxlength="30"/><br>
    16. <p>
    17. <label for="sch"><input type="radio" checked="checked" name="chs" value="sch" id="sch"/>opt1</label><br/>
    18. <label for="th"><input type="radio"  name="chs" value="th" id="th"/>opt2</label><br/>
    19. </p>
    20. <input class="button" type="submit" value="enter"></a>    [url="registration"]reg[/url]
    21. </form>
    22. <br />
    23.  
    24. <?
    25. if(isset($_POST['login']) && isset($_POST['pass']))
    26. {
    27.    echo "проверки, авторизации и т.д.";    
    28. }
    29. ?>
    30.  
    31. <br><br><br><br><br><br><br><br><br><br><br>
    32. <br><br><br><br><br><br><br><br><br><br><br>
    33. <br><br><br><br><br><br><br><br><br><br><br>
    34. <br><br><br><br><br><br><br><br><br><br><br>
    35.  
    36. <script>
    37.         $('.scroll').click(function(event) {
    38.             event.preventDefault();
    39.             var href=$(this).attr('action');
    40.             var target=$(href);
    41.             var top=target.offset().top;
    42.             $('html,body').animate({
    43.               scrollTop: top
    44.             }, 1000);
    45.             });
    46. </script>        
    47.     </body>
    48. </html>
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    class="form scroll" и $('.scroll').click
    ты перехватил клик по форме и тем самым заблокировал её
     
  9. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Это можно вылечить или может можно другим способом сделать?
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    можно отправлять форму через ajax, или после submit в php вывести $('.scroll').
    $('.scroll').click удалить
     
  11. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    А можно ли чуть подробнее? Вывод в обработчике который за формой?
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Вывел форму на страницу без js, форму отправили на php обработчик, ты через if проверил, что пришёл POST и вывел скрипт который при загрузки страницы сделает тебе animate.

    http://phpfaq.ru/na_tanke