javascript - 提交前在输入字段中发生 relaoad 时如何保留值?

标签 javascript jquery html angularjs

HTML:

<form name="shippingForm" class="form-horizontal" role="form">
  <div class="form-group">
    <p class="control-p col-sm-2" for="Address">Address Line1<b class="h4-color">*</b>:</p>
    <div class="col-sm-10">
      <input type="text" name="Address" placeholder="Address Line1" ng-model="shipping.addressLine1" class="input-width" ng-init ="shipping.addressLine1" required /><span class="custom-error" ng-show="shippingForm.Address.$dirty && shippingForm.Address.$error.required">Required.</span>
    </div>
</div>
<div class="form-group">
    <p class="control-p col-sm-2" for="Address2">Address Line2:</p>
    <div class="col-sm-10">
        <input type="text" name="AddressLine" placeholder="Address Line2" ng-model="shipping.addressLine2" class="input-width" />
    </div>
</div>

<button type="submit" class="pull-right btn div-margin-left" ng-disabled ="shippingForm.$invalid "ng-click="saveShipping(shipping)">CONTINUE</button>
</form>

js文件:

$scope.saveShipping = function(shippingDetails){     
             var userData = storeLocally.get('userInfo');   
             var addr = "Shipping";

                if (userData.customerId){
                     addShippingInfo(shippingDetails,userData.customerId,addr);
                }
                else {        
                    storeLocally.set('shipInfo', shippingDetails);
                    //$location.path(path);
                }
         };         

         function addShippingInfo(shipAdd, custId, addr){

             appServices.addAddress(shipAdd, custId, addr).then(function (d){
                if (d){
                        storeLocally.set('shipInfo', shippingDetails);
                        //console.log("inside function", shippingDetails);
                        //$location.path(path);
                    }           
                 },
                  function (d) {
                      if (d.status == 500) {
                          window.alert("Oops! some problem here..");
                      };
                 });
         };        

即使在提交前重新加载页面后,我也想保留字段中的值。我试过 cookies 但似乎使用它不是一个好的选择。 请向我提供一些解决此问题的建议。

最佳答案

您可以使用不使用 cookie 的 localStorage 和 jQuery 的 .change() 以便每次表单项更改时,使用 localStorage 存储其新值,并在页面加载时获取这些值(如果存在)。

示例 HTML

<input type="text" id="name" />

Javascript

if(localStorage.getItem("name") != null)
    {
    $('#name').val() = localStorage.getItem("name");
    }

$('#name').change(function()
    {
    localStorage.setItem("name", $('#name').val());
    });

然后,在提交表单时,您需要将您使用的所有 localStorage 变量重置为 null。

希望这对您有所帮助!

关于javascript - 提交前在输入字段中发生 relaoad 时如何保留值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072819/

相关文章:

javascript - jquery 在滚动时更改 div css 并且也改回来

html - Wrapper Div 和 Inner Div 居中对齐

Javascript 和 anchor 标签,最佳实践?

JavaScript 控制台 : detect history of function calls

jquery - 在动态加载的 iframe 中捕获 keyup 事件

javascript - 导入 jQuery 验证

javascript - 在 njs (javascript) 中用连字符拆分驼峰式单词的正则表达式

javascript - 如何使用 Angular.js 和 Javascript 删除浏览器通过“记住我”选项保存的密码

javascript - 将绝对位置转换为相对位置

jquery - 带有嵌套选项卡问题的 Bootstrap 弹出模式