2014-12-03 10 views
5

Próbuję przechowywać przez lokalną pamięć masową wszystkie wartości pól formularza (pod identyfikatorem wejściowym), tak jak to localStorage.setItem("input id", fieldvalue);, gdy użytkownik kliknie przycisk "zapisz". powodem jest to, że w późniejszym terminie użytkownik ma możliwość ponownego załadowania wartości pola formularza zamiast przepisywania wszystkiego, co jest problemem, a identyfikator i nazwy pól nie są znane, ponieważ są generowane w zależności od tego, co wybierze użytkownik na poprzedniej stronie (jaki szablon wybiorą).Zapisz i wczytaj wartości wejściowe za pomocą pamięci lokalnej?

Demo (powiedzmy to zostało wygenerowane):

<input type="text" id="meta_title" name="seo_meta_title"> 
<input type="text" id="meta_description" name="seo_meta_description"> 
<input type="text" id="header" name="header"> 

<!-- Submit form--> 
    <input type="submit" value="Create"> 

<!-- buttons--> 
    <button onclick="save()">save</button> 
    <button onclick="load()">load</button> 

bo nie wiem, identyfikatory wejściowych, nie mogę po prostu napisać:

function save() { 
    if (typeof(Storage) != "undefined") { 

    //some_code_to_insert_value = x, y, z 

    localStorage.setItem("meta_title", x); 
    localStorage.setItem("meta_description", y); 
    localStorage.setItem("header", z); 
    } 
} 

I to samo dotyczy obciążenia funkcja

// LOAD 
function load() { 
if (typeof(Storage) != "undefined") { 
    // Adds data back into form fields 

    document.getElementById("meta_title").value = localStorage.getItem("meta_title"); 
    document.getElementById("meta_description").value = localStorage.getItem("meta_description"); 
    document.getElementById("header").value = localStorage.getItem("header"); 

    } 
} 

Jestem bardzo nowa w JavaScript, ponieważ jestem pewien, że możesz powiedzieć jakąkolwiek pomoc, kod lub linki będą doceniane d i działające skrzypce js byłyby niewiarygodne (o ile nie polegają na wcześniejszej znajomości identyfikatora wejścia itp.) Spędziłem kilka godzin próbując to zrobić i zmarnowałem jeszcze więcej czasu, próbując wygenerować JS potrzebny z PHP dopóki nie powiedziano mi, że to straszny sposób.

+1

Masz niedozwolone znaki zarówno w HTML i JavaScript. –

+0

Literówka tutaj '(" "meta_description") 'dwie cytaty przed nazwą pozycji – jtheman

+0

Przepraszam, poprawiam i to jest tylko kod demo nie działa, tylko tam na przykład –

Odpowiedz

14

Jeśli chcesz polegać na jQuery to może pomóc:

$('#save').on('click', function(){ 

    $('input[type="text"]').each(function(){  
     var id = $(this).attr('id'); 
     var value = $(this).val(); 
     localStorage.setItem(id, value); 

    }); 
}); 

$('#load').on('click', function(){ 
    $('input[type="text"]').each(function(){  
     var id = $(this).attr('id'); 
     var value = localStorage.getItem(id); 

     $(this).val(value); 

    }); 
}); 

Polecam uniknąć inline-js, więc zaktualizowałem do kodu, aby korzystać .on() do mocowania -handler click z dwoma przyciskami .

Demo

referencyjny:

.each()

+0

Wow, dziękuję bardzo, to jest idealne! JQuery ma 100 % dobrze, to jest dokładnie to, czego chciałem! Jeszcze raz dziękuję za poświęcony czas! znaczy dla mnie tyle! wrócę i wznowię to, gdy będę miał 15 przedstawicieli, których potrzebuje! –

+0

Nie ma za co, cieszę się, że mogłem ci pomóc – empiric

+0

tylko zaoszczędziło mi godzin programowania zmiennych dla ponad 200 dynamicznych pól formularza w mojej aplikacji. Dzięki @empiric !!!! – MizAkita

0
Replace Html Code And Script File 
    <form method='post' id='myform'> 
    <input type="text" id="meta_title" name="seo_meta_title"> 
    <input type="text" id="meta_description" name="seo_meta_description"> 
    <input type="text" id="header" name="header"> 

    <!-- Submit form--> 
     <input type="submit" id="save" value="Create"> 

    <!-- buttons--> 
     <button onclick="save()">save</button> 
     <button onclick="load()">load</button> 
    </form> 
    <script> 
    $('#save').on('click', function(){ 
     var post_vars = $('#myform').serializeArray(); 
     localStorage.setItem(id, post_vars); 
    }); 
    </script>