0

Below is how I tried to retain the form values using JavaScript, but it is not working:

<form action="" method="Post" onload="saveData();">
<Label>1. What is your favourite browser?</Label>
<select id="browserValue">
    <option value="Internet Explorer">Internet Explorer</option>
    <option value="Firefox">Firefox</option>
    <option value="Chrome">Chrome</option>
    <option value="Opera">Opera</option>
    <option value="Safari">Safari</option>
</select>
<br>
<br>
<Label>2. What is your favourite food group?</Label>
<select id="foodValue">
    <option value="Meats/Alternatives">Meats/Alternatives</option>
    <option value="Vegetables">Vegetables</option>
    <option value="Dairy Products">Dairy Products</option>
    <option value="Fruits">Fruits</option>
    <option value="Grains">Grains</option>
    <option value="Confections (Junk Food)">Confections (Junk Food)</option>
</select>
<br>
<br>
<Label>3. What is your favourite game genre?</Label>
<select id="gameValue">

    <option value="FPS">First Person Shooter (Ex: Halo, Call of Duty)</option>
    <option value="TPS">Third Person Shooter (Ex: Ghost Recon, Gear of War)</option>
    <option value="Puzzle">Puzzle (Ex: Sudoku, Minesweeper)</option>
    <option value="Sim">Simulation (Ex: Minecraft, SimCity)</option>
    <option value="Other">Other (Please specify the genre)</option>
   </select>

<br>
<br>
<input type="button"  value="Submit">
</form>
<script>
function saveData(){
    var q1 = document.getElementById("browserValue").onChange().value;
    var a = localStorage.setItem("browsers", q1);
    var q2 = document.getElementById("foodValue").onChange().value;
    var b = localStorage.setItem("food", q2); 
    var q3 = document.getElementById("gameValue").onChange().value;
    var c = localStorage.setItem("game", q3);

   }
   document.getElementById("browserValue").value = a;
   document.getElementById("foodValue").value = b;
   document.getElementById("gameValue").value = c;  
</script>

How to retain multiple form values in JavaScript after reloading a web page?

2
  • I have never used this before but shouldn't you use document.getElementById("browserValue").value = localStorage.getItem("browsers") to get the value from local storage? Your variable a, b, c will go out of scope when the page is reloaded. Commented Aug 20, 2015 at 12:52
  • Yes I have done also like as you said but still it is not working @GobSmack Commented Aug 20, 2015 at 13:00

1 Answer 1

1

I have created a fiddle and it seems to be working: http://jsfiddle.net/4hsxjhnd/1/

HTML

<form action="" method="Post">
<Label>1. What is your favourite browser?</Label>
<select id="browserValue">
    <option value="Internet Explorer">Internet Explorer</option>
    <option value="Firefox">Firefox</option>
    <option value="Chrome">Chrome</option>
    <option value="Opera">Opera</option>
    <option value="Safari">Safari</option>
</select>
<br>
<br>
<Label>2. What is your favourite food group?</Label>
<select id="foodValue">
    <option value="Meats/Alternatives">Meats/Alternatives</option>
    <option value="Vegetables">Vegetables</option>
    <option value="Dairy Products">Dairy Products</option>
    <option value="Fruits">Fruits</option>
    <option value="Grains">Grains</option>
    <option value="Confections (Junk Food)">Confections (Junk Food)</option>
</select>
<br>
<br>
<Label>3. What is your favourite game genre?</Label>
<select id="gameValue">

    <option value="FPS">First Person Shooter (Ex: Halo, Call of Duty)</option>
    <option value="TPS">Third Person Shooter (Ex: Ghost Recon, Gear of War)</option>
    <option value="Puzzle">Puzzle (Ex: Sudoku, Minesweeper)</option>
    <option value="Sim">Simulation (Ex: Minecraft, SimCity)</option>
    <option value="Other">Other (Please specify the genre)</option>
   </select>

<br>
<br>
<input type="button" value="Submit" onclick="savecode()">
<input type="button" value="Reload" onclick="getcode()">
</form>

JS:

//Script
function savecode()
{
  localStorage.setItem("browsers", $("#browserValue").val());
  localStorage.setItem("food", $("#foodValue").val());
  localStorage.setItem("game", $("#gameValue").val());
}

function getcode()
{
    alert(localStorage.getItem("browsers"));
   document.getElementById("browserValue").value = localStorage.getItem("browsers");
   document.getElementById("foodValue").value = localStorage.getItem("food");
   document.getElementById("gameValue").value = localStorage.getItem("game");  
}

A few things I learnt while solving this were that: onload works only with body see here

Also, I read about either wrapping onchange in document ready or attaching an event listener to it to trigger the event properly: event listener, ready event

I have modified the program slightly. If you press the reload, it will fetch the values from local storage instead of the values auto-filling on page refresh which can be easily changed. Also, I am using the submit button instead of onchange.

I hope this helps!

Sign up to request clarification or add additional context in comments.

2 Comments

Thank you your answer helped me a lot @GobSmack
@CSiva Glad I could help :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.