高分求助,js history.go(-1)返回问题

slysmart 2012-04-02 03:58:12
问题现象为,点击添加后,条件不符的情况下使用 js history.go(-1)后,这时‘提醒时间’这行为默认值了(须不为默认值),例如选radio‘周’后返回‘周’的选择页面才是我想要的,现在是再次点radio '周' 才可以(submit前的值还在),该如何处理这个情况,各位帮忙啊。(我自己感觉,如果用cookies,返回时用得到的cookies再次执行sd_hide(id),我js不熟)


<SCRIPT language=javascript>
function sd_hide(id)
{
var sd_endtime = document.getElementById('sd_endtime');
var y_word = document.getElementById('y_word');
var m_word = document.getElementById('m_word');
var d_word = document.getElementById('d_word');
var sd_week = document.getElementById('sd_week');
var sd_month = document.getElementById('sd_month');
var sd_day = document.getElementById('sd_day');
var sd_number = document.getElementById('sd_number');
var mg_word = document.getElementById('mg_word');

if(id.value == -1) {
y_word.innerHTML="";
m_word.innerHTML="";
d_word.innerHTML="";
sd_week.style.display='none';
sd_day.style.display='none';
sd_month.style.display='none';
sd_endtime.style.display='none';
sd_number.style.display='none';
mg_word.style.display='none';
}
else if(id.value == 'yyyy') {
y_word.innerHTML="年:";
m_word.innerHTML="月";
d_word.innerHTML="日";
sd_week.style.display='none';
sd_day.style.display='';
sd_month.style.display='';
sd_endtime.style.display='';
sd_number.style.display='';
mg_word.style.display='';
}
else if(id.value == 'm') {
y_word.innerHTML="月:";
m_word.innerHTML="";
d_word.innerHTML="日";
sd_week.style.display='none';
sd_month.style.display='none';
sd_day.style.display='';
sd_endtime.style.display='';
sd_number.style.display='';
mg_word.style.display='';
}

else if(id.value == 'ww') {
y_word.innerHTML="周:";
m_word.innerHTML="";
d_word.innerHTML="";
sd_month.style.display='none';
sd_day.style.display='none';
sd_week.style.display='';
sd_endtime.style.display='';
sd_number.style.display='';
mg_word.style.display='';
}
}

</SCRIPT>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="css/css.css">
<title>上海富士达电梯研发有限公司</title>
</head>
<body topmargin="0" leftmargin="0" onLoad="">
<form method=post name="form1" action="scheduleadd.asp">
<table border="0" cellpadding="0" cellspacing="0" width="500">
<tr align="left">
<td>提醒类型:</td><td>
<input type="radio" name="sd_interval" id="-1" value="-1" onclick='sd_hide(this)' >一次性提醒
<input type="radio" name="sd_interval" id="ww" value="ww" onclick='sd_hide(this)'>周
<input type="radio" name="sd_interval" id="m" value="m" onclick='sd_hide(this)'>月
<input type="radio" name="sd_interval" id="yyyy" value="yyyy" onclick='sd_hide(this)' checked>年
</td>
</tr>
<tr align="left">
<td>开始使用时间:</td><td width="400">
<input name="startdate" type="text" class="style2" onfocus="if (this.value==this.defaultValue) this.value='';" onblur="if (this.value=='') this.value=this.defaultValue;" onclick="new Calendar().show(this);" value="<%=date()%>" size="10" maxlength="10" readonly="readonly"/>
</td>
</tr>
<tr>
<td >提醒时间:</td>
<td>
<span id='mg_word'>每隔</span> <input type="text" name="sd_number" id="sd_number" size="2" maxlength="2" value="1" onblur="checkObj('sd_number')"></input>
<span id='y_word'>年</span>
<select size=1 id="sd_week" name="sd_week" style="display:none;">
<option value="2">星期一</option>
<option value="3">星期二</option>
<option value="4">星期三</option>
<option value="5">星期四</option>
<option value="6">星期五</option>
<option value="7">星期六</option>
<option value="1">星期日</option>
</select>
<select size=1 name="sd_month" id="sd_month">
<%
for i=1 to 12
%>
<option value="<%=i%>"><%=i%></option>
<%
next
%>
</select>
<span id='m_word'>月</span>
<select size=1 name="sd_day" id="sd_day">
<%
for i=1 to 31
%>
<option value="<%=i%>"><%=i%></option>
<%
next
%>
</select>
<span id='d_word'>日</span>
<select size=1 name="starthour" id="sd_hour">
<%
for i=8 to 18
%>
<option value="<%=i%>"><%=i%></option>
<%
next
%>
</select>时
<select size=1 name="startminute" id="sd_minute">
<%
for i=0 to 50 step 10
%>
<option value="<%=i%>"><%=i%></option>
<%
next
%>
</select>分</td>
</tr>
<tr align="left" id='sd_endtime'>
<td>结束使用时间:</td><td>
<input name="enddate" type="text" class="style2" onfocus="if (this.value==this.defaultValue) this.value='';" onblur="if (this.value=='') this.value=this.defaultValue;" onclick="new Calendar().show(this);" value="2999-12-31" size="10" maxlength="10" readonly="readonly"/>
</td>
</tr>
</table>
<input type="hidden" name="starttime">
<input type="hidden" name="endtime">
<input type="submit" name="submit" value="添加" onclick="checktime();">   <input type="button" value="返回" onclick="window.location.href='schedule.asp'">
</form>
</center></td>
</tr>
</table>
</body>
</html>
...全文
2003 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzhiyuan 2012-04-03
  • 打赏
  • 举报
回复
var cookie = jQuery.trim(cookies[i]);
这一句写时我用惯了jquery,可改用下面的
var cookie =cookies[i].replace(/^\s*|\s*$/g, "")

slysmart 2012-04-03
  • 打赏
  • 举报
回复
非常谢谢楼上三位,一楼正解
二楼的我试验时报,未定义jQuery
Acesidonu 2012-04-02
  • 打赏
  • 举报
回复
<body topmargin="0" leftmargin="0" onLoad="">
这个onload要删掉,否则会覆盖掉。
wzhiyuan 2012-04-02
  • 打赏
  • 举报
回复
返回时浏览器只保存form的手动输入值,不保存脚本的更改。为了达到你的目的,
在选择时你设置一下cookie就行了

function sd_hide(id) {
document.cookie = "sd_interval="+ id.id
`// ....略

在页面底部根据cookie来重新设置选项

var cookiesd=getcookie("interval");
if(cookiesd && document.getElementById(cookiesd)){
sd_hide(document.getElementById(cookiesd).id);
document.getElementById(cookiesd).checked = true;
}
function getcookie(name) {
var cookieValue="";
if(document.cookie){
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
Acesidonu 2012-04-02
  • 打赏
  • 举报
回复

window.onload = function() {
var rs = document.getElementsByName('sd_interval');
for (var i = 0, len = rs.length; i < len; i++) {
if (rs[i].checked) {
sd_hide(document.getElementById(rs[i].value));
break;
}
}
}

注册onload事件

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧