2

使用以下html:

<html>
    <body>
        <form action="#">
            <p><input type="text"></input></p>
        </form>
    </body>
</html>

加载时输入有一个空值。将其更改为“1”并输入(提交)页面将显示“1”按回将用输入的“1”预填充页面而不是初始状态(空)

我的真实世界应用程序是一个 asp.net 页面,页面顶部包含搜索输入,底部包含结果。按下返回时,这些字段会预填充与下面显示的结果中显示的值不对应的值。

如何使浏览器的后退按钮使用与历史记录相应页面的初始状态相对应的值预填充页面?

我宁愿不禁用 asp.net 缓存,但不介意如果没有其他选择。尽管如此,所有禁用缓存的谷歌点击都不起作用。

更新
我认为输入的值应该对应于历史列表中条目的初始状态。情况似乎并非如此。它对应于发布之前的状态。

  1. http:\localhost:8080\index.html => 输入 = ""
  2. http:\localhost:8080\index.html?val=2 => 输入 = "2"
  3. http:\localhost:8080\index.html => 输入 = "2"
4

3 回答 3

0

这应该有效。这是一个 jquery 函数,因此您需要在页面中引用它。例如,这会将输入项的值设置为“A”...


$(document).ready(function() {
    // this code will be run immediately after the page has displayed.
    // "ROpt" is the id of the field.
    $("#ROpt").val("A");
 });
于 2011-01-04T14:37:41.393 回答
0

另一种方法是在文档加载完成后使用 JavaScript 清除字段。

于 2011-01-04T14:16:42.633 回答
0

您也许可以引入一个“虚拟”URL 变量,以诱使浏览器相信它是一个全新的页面。

www.example.com/form.aspx?dummy=3423902

使用一些 javascript 使浏览器以新的随机数再次拉取页面dummy=

服务器只是忽略了这个值。

我知道这每次都会导致 2 次回发,但肯定会起作用。努力“要求”浏览器不要首先使用 http 标头进行缓存 - 尽管我相信当你说:

我宁愿不禁用 asp.net 缓存,但不介意如果没有其他选择。尽管如此,所有禁用缓存的谷歌点击都不起作用。

这是行不通的。

于 2011-01-04T14:17:54.903 回答