将表单数据保存到本地存储并在刷新时显示 [英] Saving form data to local storage and show it on refresh

查看:197
本文介绍了将表单数据保存到本地存储并在刷新时显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作一个表单,用户可以输入他们的数据。我希望通过本地存储来保存这个日期。但是当我刷新页面时,只记得身高和体重。

I am making a form where users can input their data. I'd like for this date to be saved by use of local storage. But when i refresh the page only height and weight are still remembered. And i have been quite stuck on trying to make gender , sportivity and birthdate be remembered as well.

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.css" />
    <title>Test</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.js"></script>
    <script>
        $(document).ready(function() {
            $(window).unload(saveSettings);
            loadSettings();
        });

        function loadSettings() {
            $('#height').val(localStorage.height);
            $('#weight').val(localStorage.weight);
            $('#dateOfBirth').val(localStorage.dateOfBirth);
            $('input[type=radio]:checked').val(localStorage.gender);
            $("#sportive").find("option[value=" + localStorage.sportive + "]").attr("selected", "selected");
        }

        function saveSettings() {
            var height = document.getElementById("height").value;
            var weight = document.getElementById("weight").value;
            var sportive = document.getElementById("sportive").value;
            var gender = $('input[type=radio]:checked').val();
            var dateOfBirth = document.getElementById("dateOfBirth").val();

            localStorage.height = height;
            localStorage.weight = weight;
            localStorage.dateOfBirth = dateOfBirth;
            localStorage.sportive = sportive;
            localStorage.gender = gender;
        }


    </script>
</head>
<body>
    <div data-role="content">

        <form id="myForm" >

            gender:

            <input id="man" type="radio" name="gender" value="Man" >
            <label for="man">Man</label>

            <input id="vrouw" type="radio" name="gender" value="Vrouw">
            <label for="vrouw" >Vrouw</label>

            dateOfBirth:
            <input type="date" id="dateOfBirth" name="datum" required />

            weight (in kg):
            <input type="number" id="weight" name="weight" required />

            height (in cm):
            <input type="number" id="height" name="height" required />

            Hoeveel keer doe je aan sport per week?
            <select id="sportive" name="sport">
                <option value="1.2" >Weinig of geen training, kantoorwerk</option>
                <option value="1.375">Lichte training/sport 1-3 dagen per week</option>
                <option value="1.55" >Gemiddelde training/sport 3-5 dagen per week</option>
                <option value="1.725" >Zware training/sport 6-7 dagen per week</option>
                <option value="1.9" >Zware dagelijkse training/sport plus lichamelijk werk</option>
            </select>

            <br />

        </form>

    </div>
</body>

问候语

推荐答案

您的脚本很复杂。尝试这个。正在工作 JSFIDDLE

You are complicating your script. Try this. Working JSFIDDLE

如果您使用jQuery一次,请不要将它与纯JavaScript混合使用,如 document.getElementById()。并且不要创建 height 变量来存储 $('#height')。val(),你可以直接使用这个。代码更易读。

If you are using jQuery once, do not mix it with pure javascript, like document.getElementById(). And do not create a height variable to store the $('#height').val(), you can use this directly. Code is more readable.

$(document).ready(function() {
    $(window).unload(saveSettings);
    loadSettings();
});

function loadSettings() {
    $('#height').val(localStorage.height);
    $('#weight').val(localStorage.weight);
    $('#dateOfBirth').val(localStorage.dateOfBirth);
    $('input[value="' + localStorage.gender + '"]').prop('checked', true);
    $("#sportive").val(localStorage.sportive);
}

function saveSettings() {
    localStorage.height = $('#height').val();
    localStorage.weight = $('#weight').val();
    localStorage.dateOfBirth = $('#dateOfBirth').val();
    localStorage.sportive = $("#sportive").val();
    localStorage.gender = $('input[type=radio]:checked').val();
}

这篇关于将表单数据保存到本地存储并在刷新时显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆