Javascript Настройка Cook ie для запоминания отправки формы - PullRequest
0 голосов
/ 07 мая 2020

Мне удалось создать форму и настроить ie повара, чтобы он запомнил, что пользователь отправил форму, но код выглядит очень сложным. Нет более простого способа сделать это? Что я могу удалить? Я НЕ СОХРАНЯЮ никакие входные данные. Мне просто нужно убедиться, что пользователь заполнил форму, а затем был перенаправлен на страницу индекса. Затем, когда они снова попытаются открыть страницу, им не нужно будет заполнять форму.

<html>
<head>
    <title>Document Title</title>
    <script type="text/javascript">
        cookie_name="landasp"
        expdays=365

        function set_cookie(name, value, expires, path, domain, secure){
            if (!expires){expires = new Date()}
                document.cookie = name + "=" + escape(value) +
            ((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
            ((path == null) ? "" : "; path=" + path) +
            ((domain == null) ? "" : "; domain=" + domain) +
            ((secure == null) ? "" : "; secure");
        }

        function get_cookie(name) {
            var arg = name + "=";
            var alen = arg.length;  
            var clen = document.cookie.length;
            var i = 0;
            while (i < clen) {
                var j = i + alen;
                if (document.cookie.substring(i, j) == arg){
                    return get_cookie_val(j);
                }
                i = document.cookie.indexOf(" ", i) + 1;
                if (i == 0) break;
            }
            return null;
        }

        function get_cookie_val(offset){
            var endstr = document.cookie.indexOf (";", offset);
            if (endstr == -1)
                endstr = document.cookie.length;
            return unescape(document.cookie.substring(offset, endstr));
        }

        function saving_cookie(){
            var expdate = new Date ();
            expdate.setTime (expdate.getTime() + (expdays*24*60*60*1000));

            Data="cooked"

            set_cookie(cookie_name,Data,expdate)
        }

        function get_cookie_data(){
            inf=get_cookie(cookie_name)
            if(!inf){
                document.getElementById("display1").style.display="block"
            }
            else{
                document.getElementById("display2").style.display="block"
            }
        }
    </script>
</head>

<body onload="get_cookie_data()">
    <div id="display1" style="display:none">
        <div class="register">
            <form action="index.html" onsubmit="saving_cookie()">
                <div>Name<br>
                    <input name="name" type="text" id="name" class="inputf">
                    <br>Tel<br>
                    <input name="tel" type="text" id="tel" class="inputf">
                    <br><br>
                    <input type="submit" name="Submit" value="Submit" class="button1">
                </div>
            </form>
        </div>

        <div id="display2" style="display:none">
            <div class="register">
                <p><strong>REGISTERED</strong></p>
            </div>
        </div>
    </body>
    </html>

1 Ответ

1 голос
/ 07 мая 2020

Да, сценарии cook ie обычно такие большие. Вы можете экспортировать их в jsfile

Однако, если вам не нужен cook ie на сервере, в настоящее время мы используем sessionStorage или localStorage

Также реверсирование теста

ПРИМЕЧАНИЕ этот сценарий полностью заменяет ваш

const cookie_name = "landasp";
window.addEventListener("load", function() {
  const inf = localStorage.getItem(cookie_name);
  if (inf) {
    document.getElementById("display2").style.display = "block"
    setTimeout(function() {location.replace("index.html"},2000)
  } else {
    document.getElementById("display1").style.display = "block"
  }
  document.getElementById("regForm").addEventListener("submit", function() {
    localStorage.setItem(cookie_name, "done");
  })
})

, добавляя идентификатор в форму и удаляя встроенные обработчики событий

<div id="display1" style="display:none">
  <div class="register">
    <form action="index.html" id="regForm">
      <div>Name<br>
        <input name="name" type="text" id="name" class="inputf">
        <br>Tel<br>
        <input name="tel" type="text" id="tel" class="inputf">
        <br><br>
        <input type="submit" name="Submit" value="Submit" class="button1">
      </div>
    </form>
  </div>

  <div id="display2" style="display:none">
    <div class="register">
      <p><strong>REGISTERED</strong></p>
    </div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...