Javascript 中设置的隐藏字段值即使在页面刷新后仍保留

Hidden field value set from Javascript retains even after page refresh

我面临一个非常奇怪的问题。 我有一个隐藏字段,如下所示。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
        <script src="http://code.jquery.com/jquery-1.9.0.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:HiddenField ID="hid_test" ClientIDMode="Static" runat='server' />
    </div>
    </form>
<script language="javascript" type="text/javascript">
    $(function () {
        alert($('#hid_test').val());
    });
</script>    
</body>

</html>

并且在服务器端为隐藏字段设置一个值,如下所示

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        hid_test.Value = "abcd"
    End If
End Sub

非常简单的代码。因此,在第一个 运行 中, 警报显示为 "abcd",因为我是从服务器端设置的。好吧..没关系。

然后我所做的是使用 jquery 从控制台更改隐藏字段值,如下所示

$('#hid_test').val('12');

在我点击 F5(页面重新加载)时进行此更改后,显然我的服务器端代码命中并且隐藏字段值应更改为 abcd

但是当页面加载时,警报会显示 12 本身。意味着它保留从客户端设置的值。任何帮助表示赞赏。正在 Firefox 中测试。

我禁用了 FF 表单填写功能如下

默认情况下,Firefox 使用以前的值自动填充表单。如果关闭该功能,您应该不会看到该行为。 This question and its answers 似乎表明在 HTML 中没有简单的方法可以告诉 Firefox 不要这样做;相反,那里的答案侧重于在 load/unload 上使用 JavaScript 来设置字段值(例如,在加载时覆盖 Firefox 自动填充的内容;在卸载时鼓励 Firefox 记住页面作者想要的值记住了)。

添加 autocomplete="off" 标签。