2016-10-20 4 views
0

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

<!-- 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.

+0

У меня нет времени, чтобы увидеть айверов –

+0

Спасибо за все анверс, все они работали –

ответ

0

Ну, пытаясь еще одно решение, используя LocalStorage вместо печенья:

<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> 
0

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

<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> 
0

Это легко перейти на любую позицию на странице, все, что вам нужно локальный якорь, пример (скопируйте следующий код в файл 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"; 
?> 

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

0

Я думаю, проблема заключается в том, что вам нужно нацелить «тело, html», а не окно.

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

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

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

быстрый пример scrollTop анимированный https://jsfiddle.net/keinchy/gLwz9n81/

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

-cheers.

Смежные вопросы