【问题标题】:Hidden field value set from Javascript retains even after page refresh即使在页面刷新后,从 Javascript 设置的隐藏字段值也会保留
【发布时间】:2015-05-01 07:28:33
【问题描述】:

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

<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

非常简单的代码。所以在第一次运行时,alert 显示为“abcd”,因为我是从服务器端设置的。好的。。没关系。

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

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

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

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

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

【问题讨论】:

    标签: javascript jquery asp.net firefox


    【解决方案1】:

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

    【讨论】:

    • 所以FF是反派??我花了 2 天时间.. 谢谢伙计.. 但只是想知道.. 这真的是浏览器中的一个错误功能......对吗?因为如果任何服务器端更改被浏览器替换听起来完全错误..
    • @sforsandeep:是的,这是 Firefox 的常见问题。如果您 turn it off 您应该能够验证这一点(因为,您知道,我可能是错的 :-))。
    • @sforsandeep:不一定是错误;这个功能有时会妨碍我们想要做的事情。这个想法是,它通过记住以前填写的内容来帮助您,因此您将来不必重复这样做。覆盖来自服务器的内容是该功能的基础。
    • 我禁用了该功能(对不起,如果我做错了)并且问题仍然存在。请检查我在问题中的编辑。但在 chrome 中问题不存在..
    • @sforsandeep:这告诉它不要存储新条目。您还需要清除现有条目。请参阅“清除表单历史记录”here
    【解决方案2】:

    添加autocomplete="off" 标签。

    【讨论】:

    • 完美答案。
    猜你喜欢
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多