2014-10-02 3 views
1

안녕하세요, localStorage 사용자를 편집하려고하지만 내 "EditUser"양식의 입력 필드에 내 사용자 정보의 값을 구문 분석 할 수 없습니다.localStorage 사용자를 편집 하시겠습니까?

set/getItem()을 사용해야하지만 내 User : index를 사용해 보았습니다. 성공하지 못했습니다.

localStorage를 통해 로그인 한 현재 사용자를 편집하려면 어떻게해야합니까?

바이올린 예를 http://jsfiddle.net/f3dsfpob/6/

HTML

<form id="userReg"> 
    <div class="item text"> 
     <label>Username:</label> 
     <div class="field"> 
      <input type="text" name="user_name" id="nameUSER" /> 
     </div> 
    </div> 
    <div class="item text"> 
     <label>Password:</label> 
     <div class="field"> 
      <input type="password" name="password" /> 
     </div> 
    </div> 
    <div class="button-wrapper"> 
     <div class="item button button-default"> 
      <div class="field"> 
       <input type="submit" id="registerUser" value="Register" /> 
      </div> 
     </div> 
    </div> 
    <input type="hidden" name="id_entry" value="0" /> 
</form> 
<fieldset name="Login" id="logUser"> 
    <legend>Login</legend> 
    <input type="text" name="first_name" id="firstName" /> 
    <br /> 
    <input type="password" id="passWord" /> 
    <br /> 
    <div class="item button"> 
     <div class="field"> 
      <input type="button" id="logIN" value="login" /> 
     </div> 
    </div> 
    <p id="result"></p> 
    <p id="negative"></p> 
</fieldset> 
<div id="form"> 
    <form id="EditUser"> 
     <table class="form"> 
      <tr> 
       <td> 
        <input type="text" name="changeUser" placeholder="username" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <input type="text" name="changePass" placeholder="password" /> 
       </td> 
      </tr> 
      <tr> 
       <td colspan="2" class="button"> 
        <input id="formSubmit" type="button" value="Undo" onClick="dbClear()" /> 
        <input id="formSubmit" type="button" value="Change" onClick="dbEdit()" /> 
       </td> 
      </tr> 
     </table> 
     <input id="inputAction" type="hidden" name="action" value="add" /> 
     <input id="inputKey" type="hidden" name="key" value="0" /> 
    </form> 
</div> 
<p id="loginResult"></p> 
<p id="negative"></p> 
<p id="registerResult"></p> 

JAVASCRIPT

var User = { 
    index: window.localStorage.getItem("User:index"), 
    $form: document.getElementById("userReg"), 
    $button_register: document.getElementById("registerUser"), 
    $button_login: document.getElementById("logIN"), 
    init: function() { 
     if (!User.index) { 
      window.localStorage.setItem("User:index", User.index = 1); 
     } 
     User.$form.addEventListener("submit", function (e) { 
      var entry = { 
       id: parseInt(this.id_entry.value), 
       user_name: this.user_name.value, 
       password: this.password.value, 
       e_mail: this.e_mail.value 
      }; 
      if (entry.id == 0) { 
       User.storeAdd(entry); 

      } 
      e.preventDefault(); 
     }, true); 
     User.$button_login.addEventListener("click", function (e) { 
      for(var i = 1; i < User.index; i++) { 
       var key = "User:" + i; 
       var entry = JSON.parse(localStorage[key]); 
       console.log("entry : ", key, entry); 

       if (document.getElementById("firstName").value == entry.user_name && document.getElementById("passWord").value == entry.password) { 
        alert("Logged in as"+" "+entry.user_name); 
        document.getElementById("loginResult").innerHTML = "Logged in as"+" "+entry.user_name; 
        console.log("entry : ", key, entry); 
        LoginUser(); 
        e.preventDefault(e);    
       } 
       else 
       { 

      document.getElementById("negative").innerHTML = "Username or Password does not match"; 
     } 
     } 
     }); 
    }, 
    storeAdd: function (entry) { 
     entry.id = User.index; 
     window.localStorage.setItem("User:index", ++User.index); 
     window.localStorage.setItem("User:" + entry.id, JSON.stringify(entry)); 
     document.getElementById("registerResult").innerHTML = "Registration succesful"; 
       return; 
    } 

}; 
User.init(); 

답변

1

당신은 잘못 몇 가지가 있습니다.

e_mail: this.e_mail.value 

이메일 필드가 없습니다. 그러면 오류가 발생하고 양식 제출 처리기가 기본값을 방지하지 않습니다.

Btw - 그런 식으로 LocalStorage에 사용자 정보를 저장하는 것은 좋지 않을 수 있습니다.

관련 문제