【问题标题】:Form Data caching in browser -- client-side solution浏览器中的表单数据缓存——客户端解决方案
【发布时间】:2009-09-17 13:18:13
【问题描述】:

基本上,我有一个表单,其中包含一些对日期敏感的信息。缓存表单的风险在于:

1) 用户可能没有注意到日期错误,只是认为服务器已经加载了他们保存的数据(如果日期正确,它应该加载)。然后他们提交数据并保存到错误的日期。他们直到下一周才注意到,或者当他们因为没有在正确的一周提交表格而被大喊大叫时才注意到。

2) 用户注意到但认为错误是服务器端的。他们从浏览器重新加载表单,而不是提交日期更改表单以获得正确的日期,所有的古怪都随之而来......

所以,我在想,由于所有在服务器端处理缓存的尝试似乎对这种情况的影响很小,也许有更聪明的方法......

这两种想法都基于这样的假设:如果输入表单为空(无值),浏览器只使用缓存数据。那么第一个问题,这是真的吗?

如果是,我想知道这些想法中哪个更有效:

1) 服务器脚本只是将所有输入设置为 0。然后我有一个 js 脚本,在页面加载时将所有输入设置为 0 为“”。 (0 永远不会是一个可能的条目,以防引发任何铃声)。

2) 不理会服务器脚本,只需让上面提到的 javascript 遍历每个输入,并将输入的 value() 更改为输入的 attr("value")。因此,如果它不存在,则将其设置为空白。

我对浏览器缓存的理解有什么缺陷吗?这两种方法会更好吗?

第二个想法的示例:

$("input :text").val(function() {
        realval = (!($this).attr("value")) ? 0 : $(this).attr("value");
        return realval;
        });

【问题讨论】:

    标签: jquery validation forms caching


    【解决方案1】:

    通过使用会话 ID 扩展输入字段,为输入字段使用不同的 ID 和名称。

    例如会话 ID 12345

    <input type="text" id="12345_firstname" name="12345_firstname" />
    

    浏览器不会触及这些字段。

    另一种方法可能是将所有输入字段设置为禁用,并在文档加载后使用 jQuery 将它们设置回启用。

    <INPUT NAME="firstname" DISABLED>
    $("input").removeAttr("disabled");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 2018-10-14
      • 2012-06-17
      • 2014-10-20
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多