2017-12-02 15 views
-1

これを手伝ってください。私はユーザーが正常にログインした後、クッキーにユーザー名を保存したい。しかし、ログインボタンがクリックされた後、フォームは未定義であり、それからaddEventListenerプロパティを使用することはできません。その結果、クッキーは作成されません。 Chromeブラウザでifのエラーが表示されますloginFormについては未定義です(createEventListener()関数プロトタイプ)。あなたは日付を満了し設定する必要がフォームは送信後に定義されていません(javascript)

index.htmを

<form action="results.htm"> 
    <fieldset id="deliveryinfo"> 
     <legend>Site Login</legend> 
     <label for="usernameinput">Username</label> 
     <input type="text" id="usernameinput" name="username" /> 
     <label for="passwordinput">Password</label> 
     <input type="password" id="passwordinput" name="password" /> 
    </fieldset> 
    <fieldset id="submitbutton"> 
     <input type="submit" id="submitBtn" value="Login" /> 
    </fieldset> 
</form> 

scripts.js

"use strict"; 

function processCookie() { 
    document.cookie = "username=" +document.getElementById('usernameinput').value; 
} 

function populateInfo() { 
    if (document.cookie) { 
     var uname = document.cookie; 
     uname = uname.substring(uname.lastIndexOf("=") + 1); 
     document.getElementById('usernameinput').value = uname; 
    } 
} 

function handleSubmit(evt) { 
    if (evt.preventDefault) { 
     evt.preventDefault(); 
    } 
    else { 
     evt.returnValue = false; 
    } 
    processCookie(); 
    document.getElementsByTagName('form')[0].submit(); 
} 

function createEventListener() { 
    var loginForm = document.getElementsByTagName('form')[0]; 
    if (loginForm.addEventListener) { 
     loginForm.addEventListener("submit", handleSubmit, false); 
    } 
    else if (loginForm.attachEvent) { 
     loginForm.attachEvent("onsubmit", handleSubmit); 
    } 
} 

function setUpPage() { 
    populateInfo(); 
    createEventListener(); 
} 

if (window.addEventListener) { 
    window.addEventListener("load", setUpPage, false); 
} 
else if (window.attachEvent) { 
    window.attachEvent("onload", setUpPage); 
} 
+0

クライアント側の認証には意味がありません。そして、ページは提出後に存在しなくなります.JSはまったく実行されません –

+0

実際のウェブサイトでは、入力したユーザー名とパスワードが検証のためにWebサーバーに送信されます(私はまだありません:) )。 私は、ユーザーのログイン名を保存するためにログインする必要のあるサイトで、Cookieの一般的な使用に慣れてきています。 – tpham20908

答えて

0

。有効期限を設定しないと、セッションが終了したときにページが終了したときに破棄されます(&)。 "path = /"を追加すると、すべてのサイトページでCookieを利用できるようになります。

function processCookie() { 
    //cookie lifetime in milliseconds (24 hours) 
    var date = new Date(new Date().getTime() + 24 * 3600 * 1000); 
    document.cookie = "username=" +document.getElementById('usernameinput').value+"; path=/; expires=" + date.toUTCString(); 
} 
+0

次のステップで有効期限を設定しようとしていますが、ユーザーがページを再読み込みまたは更新した後に、ユーザー名フィールドにCookieに保存されているユーザー名を入力する必要があります。 – tpham20908

関連する問題