Meine Anwendung speichert die ausgefüllten Formulardaten (Eingabefelder mit ihren IDs und Werten) im lokalen Speicher und lädt sie sogar erfolgreich zurück, wobei die analysierten IDs und Werte wieder getrennt werden.HTML-Formular mit Daten füllen, die im lokalen Speicher gespeichert wurden
Das Problem ist, dass es mir nicht gelingt, das Formular aus den Daten, die nach dem Neuladen der Seite in Local Storage gespeichert wurden, wieder aufzufüllen. Gespeicherte Daten verbleiben in den Ressourcen des Browsers, und die Konsole protokolliert die korrekten Werte für jedes Eingabefeld. Auf der Seite selbst wird jedoch nichts angezeigt. Hier
ist ein Beispiel für meine HTML-Struktur:
<form id="myForm" method="post">
<input type="submit" onclick="dataSave();" value="Save">
<input class="formField" type="checkbox">Task done!
<input class="formField" type="text">How it went?
</form>
Und hier ist die aktuelle JavaScript, die das Speichern und Laden auf lokalen Speicher tut:
if (typeof(Storage) !== "undefined"){
// Loading data
function dataLoad(){
var inputParse = JSON.parse(localStorage.getItem('fieldString'));
var inputId;
var inputValue;
var inputType;
$.each(inputParse, function(key, value){
inputId = key;
inputValue = value;
if (inputValue === "true" || inputValue === "false"){
inputType = inputValue;
}
});
$(".formField").each(function(){
inputId = this.id;
document.getElementById(inputId);
if (inputType === "true"){
$(inputId).attr("checked", "checked");
} else {
$(inputId).val(inputValue);
}
});
}
// Saving data
function dataSave(){
var mngrFields = {};
$(".mngr-field").each(function(){
if (this.type == "radio" || this.type == "checkbox"){
mngrFields[this.id] = this.checked;
} else {
mngrFields[this.id] = this.value;
}
});
localStorage.setItem('fieldString', JSON.stringify(mngrFields));
}
Und um die dataLoad()
zu starten, nachdem die Seite geladen wurde, habe ich eine einfache dataLoad();
in meinem $(document).ready(function(){ });
.
Wie bekomme ich das Formular mit den gespeicherten Daten ausgefüllt? Ich habe versucht, einige document.GetElementById
Workarounds, aber kein Glück.
Vielleicht sollten Sie '$ ('#' + inputId)' anstelle von '$ (inputId)' verwenden, vorausgesetzt, Sie speichern nur IDs ohne die vorangestellte '#'. –
Danke für's Bemerken! Total verpasst. Trotzdem werden die Daten für das Formular nicht geladen. :( – ProDexorite
Können Sie bitte zeigen die Ausgabe von 'console.log (inputParse);'? Es wäre hilfreich zu sehen, wie Daten gespeichert werden. Da Felder ausfüllen sollte einfach genug sein, wenn Daten korrekt in entsprechende Eingabearten eingefügt werden. –