Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在表单submit-Django上的div中保持滚动位置_Javascript_Jquery_Django - Fatal编程技术网

Javascript 在表单submit-Django上的div中保持滚动位置

Javascript 在表单submit-Django上的div中保持滚动位置,javascript,jquery,django,Javascript,Jquery,Django,所以我有一个很长的div,我需要在用户提交表单时保持滚动位置。因为我以前从来没有正确使用过JavaScript,所以我不知道该怎么做。搜索答案没有提供可用的答案。我收集到的信息是,因为我使用jQuery,所以我可能能够使用.scrollTop(),但除此之外我还不知道 下面是html页面的大致草图及其外观: <html> <head> <title>Untitled Document</title> <style> #article-t

所以我有一个很长的div,我需要在用户提交表单时保持滚动位置。因为我以前从来没有正确使用过JavaScript,所以我不知道该怎么做。搜索答案没有提供可用的答案。我收集到的信息是,因为我使用jQuery,所以我可能能够使用.scrollTop(),但除此之外我还不知道

下面是html页面的大致草图及其外观:

<html>
<head>
<title>Untitled Document</title>
<style>
#article-text {
    height: 100px;
    overflow: scroll;
}
</style>
</head>
<body>
<div>
Some random text.
</div>
<div id="article-text">
Very, very long text.
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
Even more text.
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
That is how long the text is
</div>
<div class="form-nav">
    <input type="submit" name="add_event" value="Add Event">
</div>

</body>
</html>

如何在“article text”div中保存滚动进度?不是整个页面,而是那个div。希望这里有任何指针。

您可以将位置存储在localstorage中或将其附加到URL。这里已经给出了答案:。

您的页面上没有表单,因此我猜您正在使用JS/jQuery启动POST请求

最佳方法:通过AJAX发送请求

$.post(url, data, function(response){ /* success */ });
这样,您就不需要重新加载页面,页面将保持原来的滚动位置

如果出于某种原因需要重新加载,可以将当前滚动位置从
.scrollTop()
存储到
localStorage
中,并在每个页面加载时检查localStorage中的该值

要设置该值,请在提交表单之前进行设置

localStorage.setItem('my-scroll-pos', $(window).scrollTop());
在页面重新加载后,获取值

var pos = localStorage.getItem('my-scroll-pos', 0);
if (pos)
    $(window).scrollTop(pos)

更好的选择是使用AJAX提交表单,这样页面就不会重新加载……我确实有一个表单,我应该在上面的代码中添加它,对不起。遗憾的是,我不能使用AJAX,所以我必须在提交表单后将用户重定向到同一页面。我应该把
localStorage
部分放在哪里?这是否占据了特定div的滚动位置?
var pos = localStorage.getItem('my-scroll-pos', 0);
if (pos)
    $(window).scrollTop(pos)