我正在尝试通过读取cookie数据来预先填充多个表单字段。代码似乎没有将cookie数据拆分为字段,而是将它们组合在一起。我似乎无法弄明白。
这是我的代码:
<html>
<head>
<script language="JavaScript1.2" type="text/javascript">
var today = new Date();
var expiry = new Date(today.getTime() + 30 * 24 * 3600 * 1000); // plus 30 days
function setCookie(name, value){
document.cookie=name + "=" + escape(value) + "; path=/; expires=" + expiry.toGMTString();
}
function putCookie(form){
setCookie("FirstName", form[0].FirstName.value);
setCookie("LastName", form[0].LastName.value);
return true;
}
</script>
<script language="JavaScript1.2" type="text/javascript">
function ReadCookie(){
if (document.cookie != ""){
cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
cookie = cookies[i].trim().split("=");
if (cookie[0] == 'FirstName') {
document.TestForm.FirstName.value = cookie[1];
}
if (cookie[0] == 'LastName') {
document.TestForm.LastName.value = cookie[1];
}
}
}
</script>
</head>
<body onload="ReadCookie()">
<form name="TestForm">
<input type="text" value="Enter Your First Name" id="nameBox" name='FirstName'>
<input type="text" value="Enter Your Last Name" id="nameBox" name='LastName'>
<input type="button" value="Go!" id="submit" onclick="putCookie(document.getElementsByTagName('form'));">
</form>
</body>
</html>
答案 0 :(得分:0)
如果我正确理解您的代码,那么您设置的cookie为“FirstName = xxxxx; path = .....”,然后是“LastName”。 document.cookie
应该为您提供“FirstName = xxxx; LastName = yyyy”。我不确定putCookie()
是否可以正常使用此代码。仔细检查确实已经设置了cookie。
因此,您首先必须将Cookie拆分为“;”,然后循环访问Cookie,然后按“=”获取值。这是一个应该与您的代码一起使用的示例:
function fillIn(){
if (document.cookie != ""){
cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
cookie = cookies[i].trim().split("=");
if (cookie[0] == 'FirstName') {
document.form1.FirstName.value = cookie[1];
}
if (cookie[0] == 'LastName') {
document.form1.LastName.value = cookie[1];
}
}
}
}
我还检查了cookie的名称,因为可能还有其他cookie飞来飞去。 : - )