2013-05-06 99 views
0

我用JQuery创建了一个登录脚本,当用户名和密码的值等于localstorage中的用户名和密码值时(它们在点击“Register”时被存储),它隐藏登录div并显示一个叫做'accent ”。然而,无论我在JavaScript中做什么,登录页面都会一直存在,重音页面也不会显示。为什么我的登录脚本无法工作?

我创建了一个的jsfiddle那就说明我的意思是: http://jsfiddle.net/CR47/bpztq/

下面是登录按钮的代码:

$('#loginButton').click(function(){ 
    if(localStorage.getItem('Username') != null || localStorage.getItem('Username') != ''){ 
     var cu = localStorage.getItem('Username'); 
     var cp = localStorage.getItem('Password'); 
     alert(cu);//I've alerted to show that the getItem is working 
     alert(cp); 
     var iu = $('#username').val(); 
     var ip = $('#password').val(); 
     if(iu == cu && ip == cp){ 
      $('#login').hide(0); 
      $('#accent').show(0); 
      localStorage.setItem('Logged In', 'yes'); 
      $('#name').val() == localStorage.getItem('Name'); 
      $('#gender').val() == localStorage.getItem('Gender'); 
      $('#age').val() == localStorage.getItem('Age'); 
      $('#address').val() == localStorage.getItem('Address'); 
      $('#phone').val() == localStorage.getItem('Phone'); 
      $('#email').val() == localStorage.getItem('Email'); 
     }else{ 
      alert('Incorrect username/password combo.'); 
     } 
    } 
}); 

的“登录”为localStorage的值不设置为yes 。

+0

只需添加e.preventDefault();或在$('#loginButton')行动中返回false – Olrac 2013-05-06 02:02:55

回答

2

问题在于单击$('#loginButton')之后提交表单并重新加载页面。要阻止它,您可以在Click事件中添加preventDefault()

$('#loginButton').click(function(e){ 
     e.preventDefault(); 
     if(localStorage.getItem('Username') != null || localStorage.getItem('Username') != ''){ 
      var cu = localStorage.getItem('Username'); 
      var cp = localStorage.getItem('Password'); 
      alert(cu);//I've alerted to show that the getItem is working 
      alert(cp); 
      var iu = $('#username').val(); 
      var ip = $('#password').val(); 
      if(iu == cu && ip == cp){ 
       $('#login').hide(0); 
       $('#accent').show(0); 
       localStorage.setItem('Logged In', 'yes'); 
       $('#name').val() == localStorage.getItem('Name'); 
       $('#gender').val() == localStorage.getItem('Gender'); 
       $('#age').val() == localStorage.getItem('Age'); 
       $('#address').val() == localStorage.getItem('Address'); 
       $('#phone').val() == localStorage.getItem('Phone'); 
       $('#email').val() == localStorage.getItem('Email'); 
      }else{ 
       alert('Incorrect username/password combo.'); 
      } 
     } 
    }); 
+0

这工作,谢谢。 – CR47 2013-05-06 02:36:38

+0

很高兴能帮到.. :) – 2013-05-06 02:38:33

1

您需要防止刷新页面,在:

$('#loginButton').click(function (e){ 

添加e.preventDefault();

除了需要分配的变量不是对它们进行比较,变化:

$('#age').val() == localStorage.getItem('Age'); 

到:

$('#age').val() = localStorage.getItem('Age'); 

顺便说一句,这SO后可能对你有所帮助 - Difference between == and === in JavaScript

+0

感谢您的额外提示,那只是我在编辑时尝试的,但在@Nikko Reyes的评论工作后才拿出来。 – CR47 2013-05-06 02:37:19