2014-11-29 2 views
1

나는이 tutorial 온라인을 사용하여 양식 필드 중 하나의 입력 값을 저장하려고했습니다.자바 스크립트 쿠키 저장 양식

지금까지 성공하지 못했습니다.

내가 잘못 했나요?

<script 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 storeValues(form) { 
     setCookie("email", form.email-field.value); 
     return true; 
    } 

    if(email = getCookie("email")) document.getElementById('login-form').email-field.value = email-field; 

    function getCookie(name) { 
     var re = new RegExp(name + "=([^;]+)"); 
     var value = re.exec(document.cookie); 
     return (value != null) ? unescape(value[1]) : null; 
    } 

    document.write(getCookie("email")); 
</script> 

HTML :

<form action="" method="post" id="login-form"> 
<input class="field" type="text" name="email-field" placeholder="e-mail" style="text-transform: lowercase;" autofocus> 
<br> 
<input class="field" type="password" name="pass" placeholder="password"> 
<button type="submit"></button> 
+0

당신의 절 (이메일 =의 getCookie ("이메일")) 아마해야 할 경우 경우 : 만약 (이메일 ==의 getCookie ("이메일")), 예를 들어 jyrkim

+0

이것이 효과가 있습니까? – Borsn

+1

아닙니다. 어쨌든, 방금 만든 몇 가지 변경 사항 :-) – jyrkim

답변

1

귀하의 setcookie 방법의 document.cookie를 부분은 괜찮다고, 그래서 나는 단지 그것을 작동하도록 변경 몇했습니다. 테스트 목적으로, 나는 또한 폼을 조금 바 꾸었습니다. 여기 코드는 다음과 같습니다

<form action="Cookies.html" method="post" id="login-form"> 
    <input class="field" type="text" onkeydown="if (event.keyCode == 13) document.getElementById('submitButton').click()" id="emailField" name="email-field" placeholder="e-mail" style="text-transform: lowercase;" autofocus> 
    <br> 
    <input class="field" type="password" id="password" name="pass" placeholder="password"> 
    <br> 
    <br> 
    <button id="submitButton" onclick="setCookie('email', 'emailField')" type="submit">set Cookie email</button> 
    <br> 
    <button onclick="setCookie('password', 'password')" type="button">set Cookie password</button> 
    <br> 
    <button onclick="displayCookieValue('email')" type="button">display Cookie email</button> 
    <br> 
    <button onclick="displayCookieValue('password')" type="button">display Cookie password</button> 
    <br> 
    </form> 

<div id="value"></div> 

<script> 

     var today = new Date(); 
     var expiry = new Date(today.getTime() + 30 * 24 * 3600 * 1000); // plus 30 days 

     function setCookie(name, id) { 
      var element = document.getElementById(id); 
      var elementValue = escape(element.value); 

      document.cookie = name + "=" + elementValue + "; path=/; expires=" + expiry.toGMTString(); 
      console.log(document.cookie); 
     } 

     function storeValues(form) { 
      setCookie("email", form.email - field.value); 
      return true; 
     } 

     function displayCookieValue(name) { 
      var value = getCookie(name); 
      var element = document.getElementById("value"); 
      element.innerHTML = "Cookie name: "+ name + ", value " + value; 

     } 

     function getCookie(name) { 
      var re = new RegExp(name + "=([^;]+)"); 
      var value = re.exec(document.cookie); 
      return (value != null) ? unescape(value[1]) : null; 
     } 
</script> 

주, 그것은 또한 생산에 아마 또한 내 컴퓨터에 아파치 서버를 사용하여 로컬로 테스트 :-) 좋은 생각이 아니다 쿠키 값으로 암호 값을 저장합니다.

스크린 샷은 아래의 Chromes 자원을 표시

enter image description here

+0

저장 한 전자 메일 만 필요합니다. 그래서 첫 번째 버튼 만 사용하는 것 같습니다. 그러나 버튼에 'onclick'을 사용하고 있습니다. 음, 양식을 제출해야하기 때문에 버튼 유형을 '제출'으로 변경하면됩니다. 쿠키가 저장됩니까? – Borsn

+0

@Boris, 예, 저장합니다. 방금 체크 아웃했는데 Chrome의 리소스에는 다음과 같이 제출 버튼과 함께 저장하면 이메일 용 쿠키로 표시됩니다.

+0

@Boris one 더 말할 것도없이, 제출 버튼을 사용할 때 폼 태그에 action 속성의 값을 설정해야합니다.

jyrkim