首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在刷新页面后仍能记住表单中的输入数据?

如何在刷新页面后仍能记住表单中的输入数据?
EN

Stack Overflow用户
提问于 2011-08-11 00:13:27
回答 8查看 69.7K关注 0票数 17

如何才能使表单记住用户的先前输入或当前输入,即使他/她刷新了页面?

我应该这么做吗,

代码语言:javascript
复制
            <div class="row">
             <label>Contact Messenger </label>
             <input type="text" name="messenger" id="messenger" size="50" maxlength="50" value="<?php echo $_SESSION['messenger']; ?>"/>
            </div>

代码语言:javascript
复制
            <div class="row">
             <label>Contact Messenger </label>
             <input type="text" name="messenger" id="messenger" size="50" maxlength="50" value="<?php echo $_POST['messenger']; ?>"/>
            </div>

有什么诀窍可以做到吗?..how?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-08-11 00:26:20

在提交表单的页面上,执行以下操作

代码语言:javascript
复制
    session_start();
    $_SESSION['data'] = $_POST['data'];
    $_SESSION['data_another'] = $_POST['data_another'];

然后您可以在任何地方访问这些会话变量,如下所示

代码语言:javascript
复制
    session_start(); // this should be at the top of the page before any html load
    <input type="text" name="name" value="<?php echo $_SESSION['data'];?>"/>

在成功调用时刷新页面,如下所示

代码语言:javascript
复制
     $.ajax({
           type: "POST",
           url: "yourfile.php",
           data: 'data='+ data,
           success: function(){
               location.reload();
           }
       });
票数 16
EN

Stack Overflow用户

发布于 2013-04-23 17:06:20

我在我的一个项目中遇到了类似的问题,所以我编写了一些js来使用cookie来处理这个问题。首先,我找到了两个用于设置和获取cookies值的简单函数:

代码语言:javascript
复制
function setCookie(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
    document.cookie = c_name + "=" + c_value;
}

function getCookie(c_name) {
    var c_value = document.cookie;
    var c_start = c_value.indexOf(" " + c_name + "=");
    if (c_start == -1) {
        c_start = c_value.indexOf(c_name + "=");
    }
    if (c_start == -1) {
        c_value = null;
    } else {
        c_start = c_value.indexOf("=", c_start) + 1;
        var c_end = c_value.indexOf(";", c_start);
        if (c_end == -1) {
            c_end = c_value.length;
        }
        c_value = unescape(c_value.substring(c_start, c_end));
    }
    return c_value;
}

然后我编写了另外两个函数来设置和获取输入值:

代码语言:javascript
复制
function saveValue(input) {
    var name = input.attr('name');
    var value = input.val();
    setCookie(name,value);
}

function getValue(input) {
    var name = input.attr('name');
    var value = getCookie(name);
    if(value != null && value != "" ) {
        return value;
    }
}

并使用jQuery将用户的输入值保存到会话cookie中

代码语言:javascript
复制
$('input[type=text]').each(function(){
    var value = getValue($(this));
    $(this).val(value);
}).on('blur', function(){
    if($(this).val() != '' ) {
        saveValue($(this));
    }
});

我希望它能有所帮助;)

票数 5
EN

Stack Overflow用户

发布于 2011-08-11 00:18:10

这很大程度上取决于字段中的数据来自何处。如果您的场景是呈现一个空白表单,用户输入一些数据,然后在不提交数据的情况下刷新页面,您将无能为力。这要由浏览器来处理。

你也许可以在那里做一些非常奇怪的JavaScript黑客攻击,但我不建议这样做。

另一方面,如果您的数据来自前一个页面或类似的页面,那就是另一回事了。但是你需要告诉我们数据是从哪里来的,这样我才能给你一个合理的答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7014146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档