【发布时间】:2014-08-05 00:32:44
【问题描述】:
我有一个遗留的 .NET WebForms 应用程序,它填充页面上的多个字段(这些字段是禁用的输入文本字段)。为了说明,假设这些字段是学校课程的成绩。这些字段是动态填充的。 现在假设我想填充另一个字段(也许是平均成绩)。我打算通过 JQuery 在客户端执行此操作。
奇怪的是,在 JQuery 的 ready 函数中,这些字段的值没有被填充。 (我还尝试了稍后调用的 $(window).load - 但结果相同)。所以,$("#fieldid1").val() 是空的。所有其他值(id、innerHTML 等)已填充,所以我知道我正在查看正确的字段。
但是,在某些时候,该字段会填充来自服务器的值。我在屏幕上看到它,如果我有 click() 处理函数,我会为同一个调用获得正确的值。
是 WebForms 行为吗?或者这个表单引擎做了一些有趣的事情。我查看了 Firebug - 加载表单后没有 AJAX 调用...
【问题讨论】:
-
这是经典的 asp 吗?因为大多数时候使用 web 表单,您的控件来自在服务器级别上运行的父标记。让您引用一个未被 Web 表单操作的 ID。` $('#').val()` 或尝试通过其类访问它。 '$(".fieldid1Class").val()'
-
检查呈现的 HTML 并查看 ID fieldid1 是否存在。有时 ASP.NET 'mangles' ID's 以确保它们是唯一的。我在这里写了一些解决方案:weblogs.asp.net/stevewellens/…
-
@SteveWellens ,你的博客让它变得更加困难。对于需要在客户端访问的控件,您可以将 ClientIdMode 设置为 Static(或从页面或 web.config 级别设置该属性)或使用内联 ASPX 标记嵌入 ID。
-
Felix,如果您需要帮助解决您的问题,您应该嵌入相关代码。见How to create a Minimal, Complete, and Verifiable example。
-
@mason - 撰写博客时 ClientIdMode 不可用。