Как прокручивать при публикации формы

#javascript #php #jquery #post #cookies

#javascript #php #jquery #Публикация #файлы cookie

Вопрос:

У меня есть форма, в которой я хочу сделать одну вещь: когда я нажимаю кнопку de и она публикует форму, я хочу прокрутить до определенной точки. Я пробовал использовать файлы cookie, и мой код выглядит следующим образом: `

 <!-- I have a library called cookie and the cookie works well, but when I send, the page go up and I want to stay in the scroll position -->
<form method="post" action="">
    <input type="submit" value="send" name="btn" /></div>
</form>
<script>
    function send() {
        cookie.asignar("altura", $(window).scrollTop(), "../js/", 10);
        $(window).scrollTop(0, cookie.agafar("altura"));
        cookie.suprimir("altura");
    }
</script>
<?php
    if (isset($_POST['btn'])) {
        echo '<script>send();</script>';
    }
?>
  

Я использую jquery и php.

Комментарии:

1. У меня нет времени просматривать ответы

2. Спасибо за все ответы, все они сработали

Ответ №1:

Что ж, пробуем другое решение, используя localStorage вместо файлов cookie:

 <form method="post" action="">
    <input type="submit" value="send" name="btn" /></div>
</form>
<script>
    $(document).ready(function(){
      // Scroll to screen height if previously saved
      var previousHeight = localStorage.getItem("pageHeight");
      if(previousHeight){
        $('html, body').animate({
          scrollTop: localStorage.getItem("pageHeight")
        }, 1000);
        localStorage.setItem("pageHeight", null);
      }

      // Saves scroll height on submit
      $("form").on("submit", function(){
        localStorage.setItem("pageHeight", $(window).scrollTop());
      });
    });
</script>
  

Ответ №2:

Просто используйте привязку на странице

   <a name="form"></a> 

<form method="post" action="">
  <input type="submit" value="send" onclick="send();"name="btn" /></div>
</form>
<script>
  function send() {

    window.location.hash = '#form';
  }
</script>
  

Ответ №3:

Легко перейти к любой позиции на вашей странице, все, что вам нужно, это локальный якорь, пример (скопируйте вставленный следующий код в PHP-файл и запустите его в своем браузере) :

 <form method="post">
  Enter number <input type="text" name="num" />
  <input type="submit" value="Submit"/>
</form>

<?php
for ( $i = 1; $i <= 200; $i   ) // DISPLAY 200 NUMBERS.
  echo "<a name='$i'>$i</a>n" . //◄■■■ LOCAL ANCHORS.
       "<br/>";
?>

<?php
if ( isset( $_POST["num"] ) )
   echo "<script type='text/javascript'>n" .
        "window.location.hash = '#{$_POST["num"]}';" . //◄■■■ JUMP TO LOCAL ANCHOR.
        "</script>n";
?>
  

Обратите внимание, как числа заключены между <a name и </a> . Это локальные якоря. Просматривайте свою адресную строку каждый раз, когда отправляете форму.

Ответ №4:

Я думаю, проблема в том, что вам нужно настроить таргетинг на «body, html», а не на window.

 $("body,html").scrollTop(0);
  

вы также можете просто прокрутить элемент:

 $el = $(element).offset().top;
$("body,html").scrollTop($el);
  

краткий пример анимации прокрутки
https://jsfiddle.net/keinchy/gLwz9n81 /

надеюсь, это полезно.

-приветствия.