刷新页面时,要使下拉菜单(select)、raido保持不变,用ajax是无法实现的。我想只能通过cookies才能实现。刷新前先把select或radio的值保存在cookies中,刷新后再填回去。下面是测试代码:
- <select name="sex" id="sex" onchange="save()">
- <option value="01" selected >男</opton>
- <option value="02" >女</opton>
- </select>
- <input id="s1" type="radio" name="xueli" value="0" onclick="save()"/>本科
- <input id="s2" type="radio" name="xueli" value="1" checked onclick="save()"/>专科
- <script language="javascript" type="text/javascript">
- function save() {
- selectIndex = document.getElementById("sex").selectedIndex;
- document.cookie = 'selectIndex =' + selectIndex;
- radios = document.getElementsByName("xueli");
- for (i = 0; i < radios.length; i++) {
- if (radios[i].checked) document.cookie = 'radioindex =' + i;
- }
- }
- window.onload = function () {
- var cooki = document.cookie;
- if (cooki != "") {
- cooki = "{\"" + cooki + "\"}";
- cooki = cooki.replace(/\s*/g, "").replace(/=/g, '":"').replace(/;/g, '","');
- var json = eval("(" + cooki + ")"); //将coolies转成json对象
- document.getElementById("sex").options[json.selectIndex].selected = true;
- document.getElementsByName("xueli")[json.radioindex].checked = true;
- }
- else
- save();
- }
- </script>
下面这种方法更完美,适用于ASP JSP
<script type=
"text/javascript"
>
function setCookie(name, value) {
var exp =
new
Date();
exp.setTime(exp.getTime() +
24
*
60
*
60
*
1000
);
}
function getCookie(name)
{
var regExp =
new
RegExp(
"(^| )"
+ name +
"=([^;]*)(;|$)"
);
var arr = document.cookie.match(regExp);
if
(arr ==
null
) {
return
null
;
}
return
unescape(arr[
2
]);
}
</script>
<select id=
"select_1"
onclick=
"setCookie('select_1',this.selectedIndex)"
>
<option value=
"apple"
>apple</option>
<option value=
"banana"
>banana</option>
<option value=
"cake"
>cake</option>
</select>
<script type=
"text/javascript"
>
var selectedIndex = getCookie(
"select_1"
);
if
(selectedIndex !=
null
) {
document.getElementById(
"select_1"
).selectedIndex = selectedIndex;
}
</script>