纯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,957评论 2 17
  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,278评论 22 257
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 114,994评论 24 450
  • 前端开发面试知识点大纲: HTML&CSS: 对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:...
    秀才JaneBook阅读 2,612评论 0 25
  • 被你牵一牵手 就毫无保留喜欢你 任你处置 你乖乖的笑 任由裙子蹲下时的露出 你任性的哭 靠着肩膀委屈了的依赖 我必...
    TJYzzd阅读 470评论 4 5