【转载】[JS]让表单提交返回后保持在原来提交的位置上

有时候,在网页中点击了页面中的按钮或是刷新了页面后,页面滚动条又 会回到顶部,想看后面的记录就又要拖动滚动条,或者要按翻页键,非常不方便,想在提交页面或者在页面刷新的时候仍然保持滚动条的位置不变,最好的办法就是 在JS中用cookie记录下当前滚动条的位置,然后刷新时读取cookie就可以实现这个功能了。
代码如下:
<script type="text/javascript">
function Trim(strValue)
{
//return strValue.replace(/^s*|s*$/g,"");
return strValue; 
}

function SetCookie(sName,sValue)
{
document.cookie = sName + "=" + escape(sValue);
}

function GetCookie(sName)
{
var aCookie = document.cookie.split(";");
for(var i=0; i < aCookie.length; i++)
{
var aCrumb = aCookie[i].split("=");
if(sName == Trim(aCrumb[0]))
{
return unescape(aCrumb[1]);
}
}

  return null;
}

function scrollback()
{
if(GetCookie("scroll")!=null){document.body.scrollTop=GetCookie("scroll")}
}
</script>
然后在html页面中设置<body id=body onscroll=SetCookie("scroll",document.body.scrollTop); >就可以在刷新或提交后滚动条的位置保持不变了。

如果不好用,这里修改下:document.body.scrollTop修改为document.documentElement.scrollTop

当你用asp.net开发web页面时,你会发现,如果你设置了一个页面,如果里面含有多个Button,而且页面很长。
当你点击ButtonPostBack时,页面总是显示在最上面,极其不方便。

但下面这段代码,写帮你解决这个问题。

<input type="submit" name="Button1" value="Button" id="Button1" />
<input type="hidden" id="Window_OffsetY" name="Window_OffsetY" value="0">
<input type="hidden" id="Window_OffsetX" name="Window_OffsetX" value="0">

<script language="Javascript">
var ua = navigator.userAgent.toLowerCase();
var isIE = (ua.indexOf(‘msie‘) != -1 && !this.isOpera && (ua.indexOf(‘webtv‘) == -1) );

function Window_OnSubmitIE(){
    document.getElementById("Window_OffsetY").value = window.event.offsetY - window.event.clientY + 2;
    document.getElementById("Window_OffsetX").value = window.event.offsetX - window.event.clientX + 2 ;
}

function Window_OnSubmitNS(event){
    document.getElementById("Window_OffsetY").value = event.pageY - event.clientY;
    document.getElementById("Window_OffsetX").value = event.pageX - event.clientX;
}

if (!isIE){
    document.forms[0].addEventListener(‘submit‘,Window_OnSubmitNS, false);
}
else{
    document.forms[0].attachEvent(‘onsubmit‘,Window_OnSubmitIE);
}

function Lili1_OnLoad(){
    window.scrollTo(0,1431);
}

if (!isIE){
    window.addEventListener(‘load‘,Lili1_OnLoad, false);
}
else{
    window.attachEvent(‘onload‘,Lili1_OnLoad);
}
</script>

document.body.scrollTop总是0的原因

最近写了一个拖动层的HTML页面,   需要获取滚动条当前的位置.

于是我使用document.body.scrolltop获取y方向滚动的位置...奇怪的事情出现了! 无论滚动条怎么滚动,document.body.scrolltop竟然一直都是0!

对比以前写的一个页面.发现区别很小. 旧页面却没有问题.这就怪了...

我开始一点一点的排除,去掉多于的代码. 直到我去掉文档最顶部的

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

页面此时才正常.

原来是这行东西造成IE无法获取document.body.scrolltop!

把顶部这两行删掉将可以了.但是为什么会这样呢?

google一下,发现改成:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

就可以了,但页面稍有变化,感觉不爽,于是又在google里找,终于解决:

var scrollPos; 
if (typeof window.pageYOffset != ‘undefined‘) 

   scrollPos = window.pageYOffset; 

else if (typeof document.compatMode != ‘undefined‘ &&    document.compatMode != ‘BackCompat‘) 

   scrollPos = document.documentElement.scrollTop; 

else if (typeof document.body != ‘undefined‘) 

   scrollPos = document.body.scrollTop; 

alert(scrollPos);

document.body.scrollTop 
要改成 
document.documentElement.scrollTop

关于js中 document.body.scrollTop 不能返回正确值的原因

本来是为了通过document.body.scrollTop来获取浏览器垂直滚动条向下滚动的像素,但是不管滚动条在什么位置总是返回是0,造成这样的原因和html的头部声明有关,如果头部声明 为:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">,这样肯定得到的结果是 0,如果该为<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">就能得到正确的结果,对于第一种头部声明想要得滚动条的滚动的高度怎么办,解决方法有两种

1、var scrollPos;

if (typeof window.pageYOffset != ‘undefined‘) {
scrollPos = window.pageYOffset;
}
else if (typeof document.compatMode != ‘undefined‘ && document.compatMode != ‘BackCompat‘) {
scrollPos = document.documentElement.scrollTop;
}
else if (typeof document.body != ‘undefined‘) {
scrollPos = document.body.scrollTop;
}

2、用document.documentElement.scrollTop 替代 document.body.scrollTop

JS控制form表单提交的位置

<script language = "JavaScript">
function CheckForm()
{

if (document.myform.keytext.value == "") {
  alert("查询关键字没有填写!\n\n请检查!");
  document.myform.keytext.focus();
  return false;
 }
    
 if (document.myform.cl.value == 1) 
  {
   document.myform.action="yqjsj.asp?keytext="+myform.keytext.value;
   document.myform.submit(); 
  }
 else if (document.myform.cl.value == 2)
  {
   document.myform.action="sjzz.asp?keytext="+myform.keytext.value;
   document.myform.submit(); 
  }
 else if (document.myform.cl.value == 3)
  {
   document.myform.action="gjhc.asp?keytext="+myform.keytext.value;
   document.myform.submit(); 
  }
 else if (document.myform.cl.value == 4)
  {
   document.myform.action="jyjqr.asp?keytext="+myform.keytext.value;
   document.myform.submit(); 
  }
}
</script>

var oFix = document.getElementById("divfix");

oFix.style.top = document.documentElement.scrollTop + "px";

【转载】[JS]让表单提交返回后保持在原来提交的位置上,布布扣,bubuko.com

时间: 2024-10-09 03:18:09

【转载】[JS]让表单提交返回后保持在原来提交的位置上的相关文章

js日期/时间比较函数,以及js校验表单后提交表单的三种方法,表单验证,以及三种结合

<pre class="html" name="code"> js日期比较(yyyy-mm-dd) function duibi(a, b) { var arr = a.split("-"); var starttime = new Date(arr[0], arr[1], arr[2]); var starttimes = starttime.getTime(); var arrs = b.split("-");

jQuery form插件的使用--用 formData 参数校验表单,验证后提交(简单验证).

Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 一.引入依赖js <script src="jquery-1.3.1.js" type="text/javascript"></script> <script src="jquery.form.js" type="text/javascript"&g

jquery.validate.js 验证表单时,在IE当中未验证就直接提交的原因

jquery.validate.js 验证表单时,在IE当中未验证就直接提交的原因 今天利用了jquery.validate.js来验证表单,发现在火狐.谷歌浏览器当中都可以进行验证,但是在IE系列浏览器当中却无法进行验证就直接将表单提交了. 在网上查了一下原因,大多数文章表明原因是js代码书写不规范造成,也就是在验证表单的规则(rules)数组的最后多了个逗号.起初我也因为是这个原因于是查看了自己的代码发现确实有此问题于是就改正过来了. 但是在浏览器中查看后仍然不起作用,在百思不得其解时,想到

js 验证表单 js提交验证类

js 验证表单 js提交验证类 附加:js验证radio是否选择 <script language="javascript">function checkform(obj){for(i=0;i<obj.oo.length;i++)         if(obj.oo[i].checked==true) return true; alert("请选择")return false; }</script><form id="f

angular js 实现表单提交时下面的table获取到表单里面的数据

angular js 实现表单提交时下面的table获取到表单里面的数据<!DOCTYPE html><html ><head lang="en"> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="css/bootstrap.min.css"/> <s

js 防止表单重复提交

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title&

利用JS实现表单的自动提交

今天需要将一个chat整合到客户的网站上去,实现网站的注册用户登录本网站之后点击某个链接能够直接登录到chat上去.我保留了chat原有的登录界面,采用JS技术当页面跳转过来的时候自动填充表单,并自动提交表单,从而实现网站用户无需再次登录即可进入chat.具体代码实现如下 JS代码 <script> //取得cookie值 function getCookie(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]*)

js获取表单里的参数并返回键值对

/** * js获取表单里的参数并返回键值对 * @version 1 * @param {Object} - js表单对象 * @returns {Object} - 表单参数键值对 */ function getFormData(form){ if (!form) { return {}; } var params = {} , elems = form.elements ; for(var i in elems){ var elem = elems[i]; if(elem.nodeName

jquery.form.js 让表单提交更优雅

jquery.form.js 让表单提交更优雅.可以页面不刷新提交表单,比jQuery的ajax提交要功能强大. 1.引入 <script src="/src/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="/src/jquery.form.js"></script> 2.使用 $(function () { va