【问题标题】:Are hidden fields on child window inaccessible from parent window子窗口上的隐藏字段是否无法从父窗口访问
【发布时间】:2010-09-16 23:32:36
【问题描述】:

我有包含字段的 asp.net 表单。当我访问此窗口时,我的 javascript 函数可以使用 getElementById() 方法通过 DOM 访问字段,当我将 postpack 打包到服务器时,我会收到客户端所做的更新。

但是,当我使用 Telerik 的 RadWindow 控件将表单作为子窗口启动时,javascript 无法访问子表单上的隐藏字段。相反,我得到空值。

我的问题是:

  1. 是子窗口上的隐藏字段 窗口打开时无法访问 从父 asp.net 表单启动?
  2. 有没有人尝试过使用 Telerik 控件并遇到问题?

编辑 Craig 指出,id 可能不同。那么还有两个问题:

  1. 你能确保你在服务器上分配的id被实际使用了吗?
  2. 使用 getElementByName() 是访问 DOM 元素的更好机制吗?

【问题讨论】:

    标签: asp.net javascript telerik


    【解决方案1】:

    元素的 ID 很可能不是你想象的那样。检查呈现的页面并查看 ID 是否存在。我猜该页面被赋予了不同的 ID,因为它是在另一个控件中呈现的。

    如果是这种情况,您可以通过访问控件客户端 ID 让表单呈现一些返回元素 ID 的脚本。

    【讨论】:

      【解决方案2】:

      要获取您的 asp.net 控件的 ID,请执行以下操作:

      <%= theControl.ClientID %>
      

      getElementByName 不如 getElementById 常用。 ID 属性应该对页面上的每个元素都是唯一的,而 name 属性可以重复。

      【讨论】:

        【解决方案3】:

        我将 getElementsByName 用于同一组内的复选框。

        关于控件的 ID,TonyB 的想法是对的,但是请确保您在 PreRender 事件处理程序中引用 ClientID 属性,因为如果您在页面生命周期中过早地这样做,它将无法使用) .

        【讨论】:

          【解决方案4】:

          在 RadWindow 加载它之前,javascript 是否可能试图获取对隐藏字段的引用?我相信我之前遇到过这个问题,不得不使用 setTimeout 来解决这个问题。

          【讨论】:

            【解决方案5】:

            大卫,我给你发这个答案是因为我在我的代码中看到了同样的问题,而我发现的唯一真正的解决方案是我必须在两个地方支持“OnClick”功能......就我而言,我使用的是 PetersDatePackage,但它在 Telerik RAD Strip 上。

            在我的例子中,控件在.ascx页面上,JS代码如下:

            function OnIncidentDateChange(ctrl, dtDate, bErr)
            {
                var weekday = new Array(7);
                weekday[0] = "Sunday";
                weekday[1] = "Monday";
                weekday[2] = "Tuesday";
                weekday[3] = "Wednesday";
                weekday[4] = "Thursday";
                weekday[5] = "Friday";
                weekday[6] = "Saturday";
            
                <%=LabelDayOfWeek.ClientID %>.innerText = weekday[dtDate.getDay()];
            }
            

            但是,这本身还不够。我必须将此代码添加到我的父页面。包含 Telerik 条带控件的页面。

            // Dummy function?
            function OnIncidentDateChange()
            {
            }
            

            一旦我这样做了,它就起作用了......

            我不确定为什么,说实话,这对我来说毫无意义,可能只是 PDP 包的问题......

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-06-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-09-30
              • 2020-07-01
              相关资源
              最近更新 更多