今天做实现一个页面功能时,由于页面高度很大。体验的人要滑动滚动条到达低端才能进行数据填写,一旦填写错误,验证码输入有误时,当进行了后台验证(我的验证码是在后台验证的,生成的一个验证码我会放入SESSION中,将前台输入的验证码传到后台与之从SESSION中取到的值对比)前台页面就会进行刷新置顶,而且填写的数据会清空,搞的用户体验不好:
我采用的是如下方法,(cookie)
function GetCookie (name)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function getCookieVal (offset)
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function SetCookie (name, value)
{
document.cookie = name + "=" + escape (value)
}
function SetCookie1 (name, value) //设置COOKIE值带时间的(有效期的)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + 30 * 2000);//过期时间 1分钟
document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}
function getScrollTop(){ //获取滚动条位置
var scrollTop=0;
if(document.documentElement&&document.documentElement.scrollTop){
scrollTop=document.documentElement.scrollTop;
}else if(document.body){
scrollTop=document.body.scrollTop;
}
return scrollTop;
}
页面底部有一个点击按钮,触发事件时,我会通过getScrollTop获取当前滚动条位置,将其放入cookie中
SetCookie1('posy',getScrollTop());//这是带时间的cookie
var phonenum=document.getElementById('phone').value;//取用户填的号码值
SetCookie("phonenum",phonenum);将号码放入COOKIE中
这样,一旦页面刷新后会执行
$(function() {
var phonenum1=GetCookie("phonenum");//从Cookie中获取号码
document.documentElement.scrollTop =GetCookie('posy');;//有效滚动条
document.getElementById('phone').value=phonenum1;
});
这样页面就会加载到你之前滚动条的位置,而且也会赋值你之前填写的数据!