簡體   English   中英

使用數組將表單數據存儲在本地存儲中並在新頁面上檢索

[英]Store form data in local storage using array and retrieving it on new page

這是第一頁。

<form id="myform">

  <label for="fname" class="fname_label">Name</label>
  <input type="text" id="fname" class="input1" placeholder="Full Name" name="fname">

  <label for="phone">Phone</label>
  <input type="number" name="phone" id="phone" placeholder="Phone Number">

  <label for="textarea" class="textarea_label">Address:</label>
  <textarea name="address" id="textarea" type="text"></textarea>

  <label for="select">Gender:</label>
  <select name="select" id="select">
                  <option value = "0">Select</option>
                  <option value = "1">Male</option>
                  <option value = "2">Female</option>
                  <option value = "3">Other</option>
               </select>
  <label for="select1">Category:</label>
  <select name="select1" id="select1">
                  <option value = "0">Select</option>
                  <option value = "1">Open</option>
                  <option value = "2">OBC</option>
                  <option value = "3">SC/ST</option>
                  <option value = "4">Other</option>
               </select>
  <label for="select2">State:</label>
  <select name="select2" id="select2">
                  <option value = "0">Select</option>
                  <option value = "1">Maharashtra</option>
                  <option value = "2">Gujarat</option>
                  <option value = "3">Rajasthan</option>
               </select>
  <label for="select3">District:</label>
  <select name="select3" id="select3">
                  <option value = "0">Select State</option>
                  <option value = "1">Select</option>
                  <option value = "1">Pune</option>
                  <option value = "1">Vidarbha</option>
                  <option value = "1">Thane</option>
                  <option value = "2">Select</option>
                  <option value = "2">Bharuch</option>
                  <option value = "2">Ahmedabad</option>
                  <option value = "2">Jamnagar</option>
                  <option value = "3">Select</option>
                  <option value = "3">Jaipur</option>
                  <option value = "3">Jodhpur</option>
                  <option value = "3">Bikaner</option>
               </select>
  <h id="qualifications">Qualifications:</h>
  <label for="checkbox1">BE</label>
  <input name="education[]" type="checkbox" value="BE" id="checkbox1">
  <label for="checkbox2">MCA</label>
  <input name="education[]" type="checkbox" value="MCA" id="checkbox2">
  <div data-role="fieldcontain">
    <label for="select-based-flipswitch">Subscription:</label>
    <select id="select-based-flipswitch" data-role="flipswitch">
                     <option value="OFF">OFF</option>
                     <option value="ON">ON</option>
                  </select>
  </div>
  <button id="myButton" type="submit" value="Submit" class="ui-btn ui-btn-b">Submit</button>
</form>

這是我嘗試將價值存儲在用戶輸入的本地存儲中。

$(document).ready(function() {
  $('#select').change(function() {
    localStorage.setItem('select', $('#select option:selected').text());
  });

  $('#select1').change(function() {
    localStorage.setItem('select1', $('#select1 option:selected').text());
  });

  $('#select2').change(function() {
    localStorage.setItem('select2', $('#select2 option:selected').text());
  });

  $('#select3').change(function() {
    localStorage.setItem('select3', $('#select3 option:selected').text());
  });

  $("button").click(function() {
    var name = $("#fname").val();
    var phonenum = $("#phone").val();
    var address = $("#textarea").val();
    var subscribe = $("#select-based-flipswitch").val();

    var qualification = '';
    var qualification1 = '';
    if ($("#checkbox1").is(":checked")) {
      qualification = $("#checkbox1").val();
    }
    if ($("#checkbox2").is(":checked")) {
      qualification1 = $("#checkbox2").val();
    }

    var input = [name, phonenum, address, select, select1, select2, select3, qualification, qualification1, subscribe];

    localStorage.setItem("input", JSON.stringify(input));
  });
});

這是我要顯示所有數據的第二頁。

<body>


  <div data-role="page" id="page2" data-dismissible="false">

    <div data-role="header">
      <h2 class="ui-title">Confirmation</h2>
    </div>

    <div data-role="main" class="ui-content">


      <div id="content">
        <p> Name: <span id="display_fname" class="one"></span></p>
      </div>

      <p> Phone No.: <span id="display_phone" class="one"></span></p>

      <div id="content">
        <p> Address: <span id="display_textarea"></span></p>
      </div>

      <p> Gender: <span id="display_select" class="one"></span></p>

      <p> Category: <span id="display_select1" class="one"></span> </p>

      <p> State: <span id="display_select2 " class="one"></span></p>

      <p> District: <span id="display_select3" class="one"></span> </p>


      <p> Qualification: <span id="display_qualifications" class="one"></span> </p>

      <p> Subscription: <span id="display_select-based-flipswitch" class="one"></span> </p>


      <a href="" class="ui-btn ui-btn-inline ui-btn-b btn-1" onClick="window.location.replace('form1.html');">OK</a>

      <a href="" class="ui-btn ui-btn-inline ui-btn-b btn-2" onClick="window.location.replace('form1.html');"> Back</a>
    </div>

  </div>
</body>

這是我嘗試從本地存儲中獲取值。僅顯示名稱,電話地址,而未顯示任何內容。

$(document).ready(function() {
  for (let i = 0; i < localStorage.length; i++) {
    var storedInput = JSON.parse(localStorage.getItem("input"));

    $("#display_fname").html(storedInput[0]);
    $("#display_phone").html(storedInput[1]);
    $("#display_textarea").html(storedInput[2]);
    $("#display_select").html(storedInput[3]);
    $("#display_select1").html(storedInput[4]);
    $("#display_select2").html(storedInput[5]);
    $("#display_select3").html(storedInput[6]);
    $("#display_qualifications").html(storedInput[7] + " " + storedInput[8]);
    $("#display_select-based-flipswitch").html(storedInput[9]);

    localStorage.clear();
  }
});

我只能顯示姓名電話和地址作為輸出。 其他字段未顯示任何內容。

假設輸入元素的name屬性與span元素的id屬性存在1對1映射(即<input name="fname" />映射到<span id="display_fname"> ,則可以輕松地使用邏輯執行以下操作:

  1. 提交表單后,您將創建一個對象數組,其中包含輸入字段的name及其值。 將此數組轉換為JSON並將其存儲在localStorage中。
  2. 當您選擇使用存儲的數據填充DOM時,只需解析localStorage中存儲的JSON,然后遍歷數組中的每個元素。 每個元素都將包含一個存儲在name鍵中的指向顯示元素的指針。

概念證明已發布在JsFiddle上,因為StackOverflow的代碼段無法在沒有瀏覽器抱怨CORS的情況下處理localStorage。 但是,下面的代碼非常簡單:

在您的表單頁面上

$(document).ready(function() {

  // Instead of listening to button click, always listen to form submit event
  $('#myform').submit(function(e) {
    e.preventDefault();

    // Create an array of objects called `formData`
    var formData = $(this).find(':input').map(function() {
      return {
        name: $(this).attr('name'),
        value: $(this).val()
      };
    }).get();

    // Store it in localStorage
    localStorage.setItem('formData', JSON.stringify(formData));
  });
});

在顯示/確認頁面上

$(document).ready(function() {

  // Read and parse from localStorage
  var formData = JSON.parse(localStorage.getItem('formData'));

  // Iterate through array, and set HTML of matching <span> element
  $.each(formData, function(i, datum) {
    $('#display_' + datum.name).html(datum.value);
  });
});

您可以嘗試以下類似的方法

<script>
$(document).ready(function(){

  $("#myButton").click(function() {
    localStorage.setItem("input", JSON.stringify($("#myform").serializeArray()));
  });

  $("#show").click(function(){
    var j = JSON.parse(localStorage.getItem("input"));
    $(j).each(function(k,v){
        $("#display_"+v.name).html(v.value);
    });
  });
});
</script>
<body>
<input type="button" id="show" value="show"/>
    <form id="myform">

          <label for="fname" class="fname_label">Name</label>
          <input type="text" id="fname" class="input1" placeholder="Full Name" name="fname">

          <label for="phone">Phone</label>
          <input type="number" name="phone" id="phone" placeholder="Phone Number">

          <label for="textarea" class="textarea_label">Address:</label>
          <textarea name="address" id="textarea" type="text"></textarea>

          <label for="select">Gender:</label>
          <select name="select" id="select">
                          <option value = "0">Select</option>
                          <option value = "1">Male</option>
                          <option value = "2">Female</option>
                          <option value = "3">Other</option>
                       </select>
          <label for="select1">Category:</label>
          <select name="select1" id="select1">
                          <option value = "0">Select</option>
                          <option value = "1">Open</option>
                          <option value = "2">OBC</option>
                          <option value = "3">SC/ST</option>
                          <option value = "4">Other</option>
                       </select>
          <label for="select2">State:</label>
          <select name="select2" id="select2">
                          <option value = "0">Select</option>
                          <option value = "1">Maharashtra</option>
                          <option value = "2">Gujarat</option>
                          <option value = "3">Rajasthan</option>
                       </select>
          <label for="select3">District:</label>
          <select name="select3" id="select3">
                          <option value = "0">Select State</option>
                          <option value = "1">Select</option>
                          <option value = "1">Pune</option>
                          <option value = "1">Vidarbha</option>
                          <option value = "1">Thane</option>
                          <option value = "2">Select</option>
                          <option value = "2">Bharuch</option>
                          <option value = "2">Ahmedabad</option>
                          <option value = "2">Jamnagar</option>
                          <option value = "3">Select</option>
                          <option value = "3">Jaipur</option>
                          <option value = "3">Jodhpur</option>
                          <option value = "3">Bikaner</option>
           </select>
          <h id="qualifications">Qualifications:</h>
          <label for="checkbox1">BE</label>
          <input name="education" type="checkbox" value="BE" id="checkbox1">
          <label for="checkbox2">MCA</label>
          <input name="education" type="checkbox" value="MCA" id="checkbox2">
          <div data-role="fieldcontain">
                <label for="select-based-flipswitch">Subscription:</label>
                <select id="select-based-flipswitch" data-role="flipswitch" name="select-based-flipswitch">
                     <option value="OFF">OFF</option>
                     <option value="ON">ON</option>
                  </select>
          </div>
      <button id="myButton" type="button" value="Submit" class="ui-btn ui-btn-b">Submit</button>
</form>

<br/>
<br/>
<br/>
<br/>

<div data-role="page" id="page2" data-dismissible="false">

    <div data-role="header">
      <h2 class="ui-title">Confirmation</h2>
    </div>

    <div data-role="main" class="ui-content">


      <div id="content">
        <p> Name: <span id="display_fname" class="one"></span></p>
      </div>

      <p> Phone No.: <span id="display_phone" class="one"></span></p>

      <div id="content">
        <p> Address: <span id="display_address"></span></p>
      </div>

      <p> Gender: <span id="display_select" class="one"></span></p>

      <p> Category: <span id="display_select1" class="one"></span> </p>

      <p> State: <span id="display_select2" class="one"></span></p>

      <p> District: <span id="display_select3" class="one"></span> </p>


      <p> Qualification: <span id="display_education" class="one"></span> </p>

      <p> Subscription: <span id="display_select-based-flipswitch" class="one"></span> </p>


      <a href="" class="ui-btn ui-btn-inline ui-btn-b btn-1" onClick="window.location.replace('form1.html');">OK</a>

      <a href="" class="ui-btn ui-btn-inline ui-btn-b btn-2" onClick="window.location.replace('form1.html');"> Back</a>
    </div>

  </div>

您可以使用openDB庫存儲整個對象-

db.store.setJSON("key", value); //to set value
db.store.getJSON("key"); //to get value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM