【问题标题】:Remember me function autocomplete is not working using jquery记住我功能自动完成在使用 jquery 时不起作用
【发布时间】:2018-09-25 06:18:23
【问题描述】:

$(function() {

  if (localStorage.chkbx && localStorage.chkbx != '') {
    $('#modal_login_remember').attr('checked', 'checked');
    $('#modal_login_email').val(localStorage.usrname);
    $('#modal_login_password').val(localStorage.pass);
  } else {
    $('#modal_login_remember').removeAttr('checked');
    $('#modal_login_email').val('');
    $('#modal_login_password').val('');
  }

  $('#modal_login_remember').click(function() {

    if ($('#modal_login_remember').is(':checked')) {
      // save username and password
      localStorage.usrname = $('#modal_login_email').val();
      localStorage.pass = $('#modal_login_password').val();
      localStorage.chkbx = $('#modal_login_remember').val();
    } else {
      localStorage.usrname = '';
      localStorage.pass = '';
      localStorage.chkbx = '';
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group">
  <p style="text-align: center"><i>Enter your email ID and password to log in to Help.</i></p>

  <div id="errormsg" style="display: none; color:red;text-align: center; padding-bottom: 1.2rem;"> Invalid token or login credentials, please log in again.</div>
  <div class="input-group">
    <span class="input-group-addon">
      <i class="fa fa-envelope"></i>
    </span>
    <input type="email" id="modal_login_email" name="modal_login_email" class="form-control" placeholder="Enter email" />
  </div>
</div>
<div class="form-group">
  <div class="input-group">
    <span class="input-group-addon">
      <i class="fa fa-unlock-alt"></i>
    </span>
    <input type="password" id="modal_login_password" name="modal_login_password" class="form-control" placeholder="Password" />
  </div>
</div>
<label class="custom-control custom-checkbox">
  <input type="checkbox" id="modal_login_remember" class="custom-control-input" />
  <span class="custom-control-indicator"></span>
  <span class="custom-control-description">Remember me</span>
</label>

<div class="modal-footer">
  <input type="button" onclick="login(document.getElementById('modal_login_email').value,document.getElementById('modal_login_password').value);" class="btn btn-primary" value="Login" style="background-color: #19659d; border-color: #19659d;" />
</div>

如果用户在登录时点击记住复选框,详细信息应保存在localstorage。如果用户尝试再次登录,用户详细信息应自动完成(如果用户键入他的姓名的几个字母,则名称和密码应自动完成)。它没有api,所以我需要从前端做。

该值存储在本地存储中,但自动完成功能无法接近它。

【问题讨论】:

  • 我在您的 HTML 中没有看到任何 ID 为 remember_me 的 checbkox。
  • 你应该使用 'prop' 作为检查状态 - $('#modal_login_remember').prop('checked', true);或 $('#modal_login_remember').prop('checked', false);
  • 这个localStorage.pass = $('#modal_login_password').val(); 很糟糕!你的整个尝试都是错误的。您不会将登录信息存储在任何位置尤其是密码,您将会话 ID 存储在 cookie 中。如果此会话仍然有效,则您已登录,否则由您的客户进行身份验证;很可能是通过浏览器中存储的密码。但是您不存储客户的登录凭据。 “我需要一个记住我功能。”在这种情况下,你不要让它成为会话cookie,而是让它在没有登录的情况下1周后过期。

标签: javascript jquery html local-storage


【解决方案1】:

您可以使用此代码,并且可以将本地存储定义为它应该拥有的对象。

 $(function() {
  if (localStorage.chkbx && localStorage.getItem(chkbx) !=='') {
    $('#modal_login_remember').attr('checked', 'checked');
    $('#modal_login_email').val(localStorage.getItem(usrname));
   $('#modal_login_password').val(localStorage.getItem(pass));
   } else {
      $('#modal_login_remember').removeAttr('checked');
      $('#modal_login_email').val('');
      $('#modal_login_password').val('');
  }

 $('#modal_login_remember').click(function() {

if ($('#modal_login_remember').is(':checked')) {
  // save username and password
  localStorage.setItem('usrname',$('#modal_login_email').val());
  localStorage.setItem('pass',$('#modal_login_password').val());
  localStorage.setItem('chkbx', $('#modal_login_remember').val());
} else {
  localStorage.setItem('usrname', '');
  localStorage.setItem('pass', '');
  localStorage.setItem('chkbx', '');
}
});
});

【讨论】:

  • 谢谢,数据正在存储在 localStorage 中......但自动完成功能不起作用。如何处理它。
  • 所以你可以测试它以调试它,纯javascript:document.getElementById("modal_login_email").value = localStorage.usrname;
  • 无法自动完成字段。数据正在存储在 LocalStorage 中。如果用户尝试再次登录,如何向字段添加自动完成功能。
  • 你能提供 jsfiddle 使用 javascript 自动完成凭据吗
猜你喜欢
  • 2016-01-12
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多