浏览器中的表单数据缓存 - 客户端解决方案

时间:2009-09-17 13:18:14

标签: jquery validation forms caching

基本上,我有一个表格中有一些相当日期敏感的信息。缓存表单的风险是:

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;
        });

1 个答案:

答案 0 :(得分:0)

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

e.g。会话ID 12345

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

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

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

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