Обработка файлов cookie Javascript - PullRequest
0 голосов
/ 01 февраля 2012

Я изучаю Javascript cookie. В основном то, что я хочу, это

  1. когда пользователь вводит свой номер в первый раз, он сохраняет имя файла cookie, его значение и срок действия до 365.

  2. Когда пользователь снова заходит на мой сайт, ему / ей больше не нужно вводить свой номер, пока файл cookie еще жив или еще не удален в браузере, он / она будет перенаправлен на моя домашняя страница.

Вот мой код в javascript на данный момент:

function checkCookie() {
    var mob_tel=getCookie("mob_tel");
    if (mob_tel!=null && mob_tel!="") {
        alert("Welcome again " + mob_tel);
    } else {
        set_name("");
    }
}

function set_name(form) {
    var mob_tel = form.mobtel.value
    if (mob_tel != "") {
        if (confirm("Are you sure you want this saved as your number?")) {
            setCookie ("mob_tel", mob_tel, 365);
            //window.history.go(0);
        }
    } else alert("Geez, at least enter something, entering nothing will cause an error.");
}

моё html тело

<body onload="checkCookie()">
    <form>
            Enter Mobile Number: <input type="text" name="mobtel"><br>
            <input type="submit" value="Save Cookie" onclick="set_name(this.form)">
    </form>
</body>

Это все работает, но у меня в firebug:

Uncaught TypeError: Cannot read property 'value' of undefined
set_name
checkCookie
(anonymous function)
onload

Возможно, мой стиль кодирования неправильный. Я открыт, чтобы переписать мой код. Я все еще новичок в JavaScript.

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Добавьте имя к форме:


<form name="your_form_name_here">
    Enter Mobile Number: <input type="text" name="mobtel" value=""><br>
    <input type="submit" value="Save Cookie" onclick="set_name(this.form)">
</form>

0 голосов
/ 01 февраля 2012

Вот рабочая версия.

Вот что я сделал:
1 - getCookie() и setCookie() не были определены.Я использовал функции W3Schools для их дополнения.
2 - Были некоторые ошибки скриптинга (пропущены точки с запятой и т. Д.), Я исправил их.
3 - для функции set_name() я изменил ее на запрос DOMчтобы получить доступ к входу, который содержит номер телефона.

<script>
function checkCookie() {
    var mob_tel=getCookie("mob_tel");
    if (mob_tel!=null && mob_tel!="") {
        alert("Welcome again " + mob_tel);
    } else {
        set_name("");
    }
}

function getCookie(c_name) {
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++) {
        x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
        y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
        x=x.replace(/^\s+|\s+$/g,"");
        if (x==c_name) {
            return unescape(y);
        }
    }
}

function setCookie(c_name,value,exdays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}

function set_name(form) {
    var mob_tel = document.getElementById('mobtel').value;
    if (mob_tel != "") {
        if (confirm("Are you sure you want this saved as your number?")) {
            setCookie ("mob_tel", mob_tel, 365);
            //window.history.go(0);
        }
    } else alert("Geez, at least enter something, entering nothing will cause an error.");
}
</script>
<body onload="checkCookie()">
    <form>
            Enter Mobile Number: <input type="text" name="mobtel" id="mobtel"><br>
            <input type="submit" value="Save Cookie" onclick="set_name(this.form)">
    </form>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...