純JS記住賬號密碼

很多登錄功能上都有個“記住密碼”的功能,其實無非就是對cookie的讀取。

引用


參照簡書 - 純JS操作Cookie

  • 添加Cookie

setCookie ( name, value, expdays )

  • 獲取Cookie

getCookie ( name )

  • 刪除Cookie

delCookie ( name )

代碼說明


form表單

<!-- 登陸表單 -->
<form method="post" autocomplete="off" onsubmit="return check()">
  <!-- 用戶名輸入 -->
  <input type="text"  name="username" id="username" required="required" >
  <!-- 密碼輸入,禁用自動填充 -->
  <input type="password" autocomplete="new-password" name="password" id="password" required="required">
  <!-- 是否記住密碼復選框 -->
  <input type="checkbox" id="isRmbPwd" name="isRmbPwd" checked="checked">記住密碼
  <!-- 提交按鈕 -->
  <input type="submit" value="提交">
</form>

提交檢查函數

點擊submit按鈕時,會調用此函數

function check ()
{
    //獲取表單輸入:用戶名,密碼,是否保存密碼
    var username = document.getElementById("username").value.trim() ;
    var password = document.getElementById("password").value.trim() ;
    var isRmbPwd = document.getElementById("isRmbPwd").checked ;
    
    //判斷用戶名,密碼是否為空(全空格也算空)
    if ( username.length != 0 && password.length != 0 )
    {
        //若復選框勾選,則添加Cookie,記錄密碼
        if ( isRmbPwd == true )
        {   
            setCookie ( "This is username", username, 7 ) ;
            setCookie ( username, password, 7 ) ;
        }
        //否則清除Cookie
        else
        {
            delCookie ( "This is username" ) ;
            delCookie ( username ) ;
        }
        return true ;
    }
    //非法輸入提示
    else
    {
        alert('請輸入必填字段!!!')
        return false ;
    }   
}

文檔初始化函數

文檔加載完畢后,執行此函數

//將function函數賦值給onload對象
window.onload = function ()
{
    //從Cookie獲取到用戶名
    var username = getCookie("This is username") ;
    //如果用戶名為空,則給表單元素賦空值
    if ( username == "" )
    {
        document.getElementById("username").value="" ;
        document.getElementById("password").value="" ;
        document.getElementById("isRmbPwd").checked=false ;
    }
    //獲取對應的密碼,并把用戶名,密碼賦值給表單
    else
    {
        var password = getCookie(username) ;
    
        document.getElementById("username").value = username ;
        document.getElementById("password").value = password ;
        document.getElementById("isRmbPwd").checked = true ;
    }
}

運行效果

初始狀態
初始表單.png

**說明 : **初始時,瀏覽器未保存Cookie,JS給各個表單賦空值,賦復選框未勾選狀態


鍵入用戶名密碼,未勾選復選框
表單鍵入,未勾選.png
提交,返回到表單頁面
回到表單頁面.png

**說明 : **未勾選保存密碼復選框,JS只提交表單到指定Action,未保存Cookie,同上


鍵入用戶名密碼,未勾選復選框
鍵入表單,勾選.png
提交表單,返回
記住了賬號密碼.png

**說明 : **瀏覽器成功保存了用戶名與密碼


此時再去掉復選框勾選狀態,提交
去掉復選框勾選.png
此時,瀏覽器就不再保存Cookie了
最終結果.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 工廠模式類似于現實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,842評論 2 17
  • 22年12月更新:個人網站關停,如果仍舊對舊教程有興趣參考 Github 的markdown內容[https://...
    tangyefei閱讀 35,235評論 22 257
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進階之旅閱讀 114,833評論 24 450
  • 前端開發面試知識點大綱: HTML&CSS: 對Web標準的理解、瀏覽器內核差異、兼容性、hack、CSS基本功:...
    秀才JaneBook閱讀 2,552評論 0 25
  • 被你牽一牽手 就毫無保留喜歡你 任你處置 你乖乖的笑 任由裙子蹲下時的露出 你任性的哭 靠著肩膀委屈了的依賴 我必...
    TJYzzd閱讀 467評論 4 5