在页面发布到服务器并返回错误后保留 javascript 更改



我有一个带有几个按钮的轨道表单。当用户单击某个按钮时,我记得隐藏表单域中的更改。

将表单

发布到服务器并重新加载后(如果表单中发生了某些错误),将重置隐藏字段。我无法保留已单击的内容。 这是试图保留已单击内容的代码

  <div class="btn-group col-sm-12">
          <button type="button" class="btn btn-default col-sm-6 active" id="user">I am user</button>
          <button type="button" class="btn btn-default col-sm-6" id="admin"> I am an admin</button>
  </div>  

<input id="profile_user" name="profile[user]" type="hidden" value="false" />
<input id="profile_admin" name="profile[admin]" type="hidden" value="false" />   

      function show_user(){
            $("#user").addClass("active");
            $("#admin").removeClass("active");    
            $("#profile_user").val("true");
            $("#profile_admin").val("false");
        }
        function show_admin(){
            $("#admin").addClass("active");
            $("#user").removeClass("active");
            $("#profile_user").val("false");
            $("#profile_admin").val("true");        
        }

    $(function(){
        console.log("reload");  
        console.log($("#profile_user").val());
            if($("#profile_admin").val() == "true"){
                show_admin();       
            }else{
                show_user();
           }
          $('#user').click(function() {
            show_user();
         });
         $('#admin').click(function() {
           show_admin();
         });
     });

或者有什么更好的方法可以通过服务器推送和retuen保持JavaScript形式的rails更改?

您可以将其保存在localStorage中,并在文档启动时检查它是否已填充。以这种方式保存数据:

localStorage.setItem('myValue',myValue)

所以首先在加载页面时检查本地存储是否不为空:

if (localStorage.length != 0){
   $('#yourField').val(localStorage.myValue);
}else{
    localStorage.setItem('myValue',myValue);
}

最新更新