读取cookie值并将值填入表单字段

时间:2017-03-20 17:35:51

标签: javascript

我正在尝试通过读取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>

1 个答案:

答案 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飞来飞去。 : - )