Access 更改了 JavaScript 中的 hiddenField 值



我有一个依赖于HiddenField值的JavaScript。这个HiddenField,我们称之为needUpdate,是一个布尔值,当我页面上的div需要使用JavaScript更新时,它被设置为true。 needUpdate位于通过Timer更新的UpdatePanel中。我尝试了两种不同的方法,都是半途而废。第一种是将 JavaScript 放在更新面板之外,并使用我的 PageRequestManager 实例来运行脚本,如下所示:

<asp:ScriptManager ID="scriptManager" runat="server" />
<script type="text/javascript">
    function DoUpdate(sender, args)
    {
        if ('<%= needUpdate.Value %>' == 'true') {
            // Code here... //
        }
    }
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(DoUpdate);
</script>
 <asp:UpdatePanel ID="replay" runat="server" Visible="false" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="replayTimer" EventName="Tick" />
    </Triggers>
    <ContentTemplate>
        <asp:HiddenField ID="needUpdate" runat="server" Value="false"/>
        <asp:Timer ID="replayTimer" runat="server" Interval="500" OnTick="replayTimer_Tick" />
        <!-- More Stuff Here -->
    </ContentTemplate>
</asp:UpdatePanel>
<div id="divToUpdate"></div>

现在,上面的内容运行脚本,但 needUpdate 中的值永远不会更改,即使在后端也已更改。因此,我尝试了下一段代码,将脚本放在UpdatePanelContentTemplate区域中

    <ContentTemplate>
        <asp:HiddenField ID="needUpdate" runat="server" Value="false"/>
        <asp:Timer ID="replayTimer" runat="server" Interval="500" OnTick="replayTimer_Tick" />
        <script type="text/javascript">
            function DoUpdate()
            {
                if ('<%= hf_needUpdate.Value %>' == 'true') {
                    // Code here... //
                }
            }
            DoUpdate();
        </script>
        <!-- More Stuff Here -->
    </ContentTemplate>
</asp:UpdatePanel>

虽然这更新了脚本区域,但从未调用过代码。关于如何让UpdatePanel更改值以馈送 JavaScript 函数的任何想法?

你正在将一个错误的结果硬编码到 JavaScript if 语句中。进入页面的内容:

'<%= hf_needUpdate.Value %>' == 'true'??

'false' == 'true'??

这永远不会改变获取隐藏字段的当前值所需的内容。

var needUpdate = document.getElementById("needUpdate").value;
if(needUpdate == "true) {
     // Do work
}

最新更新