在回发后清除隐藏的输入字段

时间:2013-05-13 13:35:45

标签: c# javascript asp.net

我使用隐藏的输入字段将值从我的javascript传递给后面的代码。这很好用,但是当我尝试从后面的代码中清除字段时,这不起作用。

<input type="hidden" id="iRowNumberTblOne" name="iRowNumberTblOne" value="" runat="server"/>

我厌倦了通过几种方式来做,但它们都不起作用。

这是最简单的方法和大多数逻辑,但它不想清除值

iRowNumberTblOne.Value = "";

我甚至制作了一个javascript,因此会在客户端清除这些值。 警报在第一次“启动时”出现,但在回发后,似乎后面的代码没有再找到javascript。

<script type="text/javascript">
        function clearInputFileds() {
        alert('test');
            document.getElementById("ctl00_contentHolder_iSiteAlias").value = "";
            document.getElementById("ctl00_contentHolder_iServiceName").value = "";
            document.getElementById("ctl00_contentHolder_iRowNumberTblOne").value = "";
            document.getElementById("ctl00_contentHolder_iRowNumberTblTwo").value = "";

        }


    </script>

这是我在代码隐藏中使用的代码

Page.ClientScript.RegisterStartupScript(GetType(), "", "clearInputFileds();", true);

你知道为什么这些方法不起作用吗?也许知道清除这些领域的更好方法吗?

编辑:

输入字段由javascript函数填充。 函数会在onClick上运行。

function setClickedValues(siteAlias, serviceName, rowNumberTblOne, rowNumberTblTwo) {
            document.getElementById("ctl00_contentHolder_iSiteAlias").value = siteAlias;
            document.getElementById("ctl00_contentHolder_iServiceName").value = serviceName;
            document.getElementById("ctl00_contentHolder_iRowNumberTblOne").value = rowNumberTblOne;
            document.getElementById("ctl00_contentHolder_iRowNumberTblTwo").value = rowNumberTblTwo;

        }

2 个答案:

答案 0 :(得分:2)

这可以在后面的代码中完成。但重要的是在ASP.Net应用程序生命周期的正确时间。仔细看看:

通常,您(重新)在提交按钮的Click事件处理程序或LoadComplete事件中设置值。如果您之前执行此操作,则在ViewState恢复时,该值将被覆盖

使用ASP.Net页面和ViewState时,以下图像非常有用:

ASP.NET Page Life Cycle
(来源:http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100%29.aspx

BTW:使用硬编码ID重置客户端代码中的值是一个非常糟糕的主意,因为它们可能会发生变化。

答案 1 :(得分:2)

由于所有这些都是服务器端元素(您将它们作为runat="server"),因此清除值的最简单方法就是:

elementID.Value="";

回发后的所有这些。如果你说在执行上述操作后没有清除这些值,可能是因为你在执行首先填充值的函数之前没有检查if(!IsPostback)

您的客户端代码也应该有效,但它可能会失败,因为您对RegisterStartupScript的最后一个参数是true,这表示应该添加<script>标记。这可能会导致问题,因为您的函数已经包含在<script>标记中,因此在这种情况下不需要最后true个参数。