@Nikita_Migushev

Как проверить localStorage и заполнить input-ы?

Есть форма регистрации. Поля Name, E-mail, Date of Birth сохраняются в localStorage.

Как правильно прописать функцию, которая проверяет, есть ли заданные значения у соответствующих ключей в localStorage, и если есть, складывает значения в соответствующие поля при перезагрузке страницы?

Для одного поля понятно, как это сделать. А для трех не совсем. Прописывать кучу IF не хочется.

window.onload = function () {

    //Set localStorage

    var userName = document.getElementById("nameField");
    var userEmail = document.getElementById("emailField");
    var userDateOfBirth = document.getElementById("dateField");


    //Wnen out of focus - set localStorage

    userName.addEventListener("focusout", (event) => {
        localStorage.setItem("userName", userName.value);
    });

     userEmail.addEventListener("focusout", (event) => {
         localStorage.setItem("userEmail", userEmail.value);
     });

      userDateOfBirth.addEventListener("focusout", (event) => {
          localStorage.setItem("userDateOfBirth", userDateOfBirth.value);
      });

    //Get localStorage

    var userNameStorage = localStorage.getItem("userName");
    var userEmailStorage = localStorage.getItem("userEmail");
    var userDateOfBirthStorage = localStorage.getItem("userDateOfBirth");

    function getLocalStorage() {
        
    }

    getLocalStorage();

};
  • Вопрос задан
  • 1236 просмотров
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
Попробуйте так.
Немного переписал, но не проверял на работоспособность:
Код
//document.addEventListener('DOMContentLoaded', () => { //faster
window.addEventListener('load', () => {
	//Set localStorage
	let el = {
		userName: document.getElementById("nameField"),
		userEmail: document.getElementById("emailField"),
		userDateOfBirth: document.getElementById("dateField"),
	};

	//Wnen out of focus - set localStorage
	let addFocusEvent =
		s => el[s].addEventListener("focusout",
			e => localStorage[s] = el[s].value);
	for (let k in el) addFocusEvent(k);

	//Get localStorage
	for (let k in el) el[k].value = localStorage[k] || "";
});
Ответ написан
@akyl-kb
Универсальный код
https://jsfiddle.net/Lfvota4r/4/
function fillForm(form) {
	var formName = form.id
  var json = localStorage.getItem('form['+ formName +']')
  var object = JSON.parse(json)
  for (var item of Object.entries(object)) {
    var key = item[0]
    var value = item[1]
    var input = form.querySelector('input[name='+ key +']')
    input.value = value
  }
}

function saveForm(form) {
	var formName = form.id
	var formData = new FormData(form)
  var object = {}
  formData.forEach(function(value, key) {
    object[key] = value
  })
  var json = JSON.stringify(object)
	localStorage.setItem('form['+ formName +']', json)
}


function syncForm(formName) {
  var form = document.getElementById(formName)

  fillForm(form)

  form.addEventListener('submit', function(event) {
    saveForm(event.target)
  })
}

syncForm('registration')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы