Asp.net 子窗口上的隐藏字段是否无法从父窗口访问

Asp.net 子窗口上的隐藏字段是否无法从父窗口访问,asp.net,javascript,telerik,Asp.net,Javascript,Telerik,我有一个包含字段的asp.net表单。当我访问此窗口时,我的javascript函数可以使用getElementById()方法通过DOM访问字段,并且当我将其后置到服务器时,我会收到客户端所做的更新 但是,当我使用Telerik的RadWindow控件作为子窗口启动表单时,javascript无法访问子表单上的隐藏字段。相反,我得到空值 我的问题是: 是子窗口上的隐藏字段 打开窗口时无法访问 是否从父asp.net表单启动 是否有人尝试使用Telerik控件进行此操作并遇到问题 编辑 克雷格指

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

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

我的问题是:

  • 是子窗口上的隐藏字段 打开窗口时无法访问 是否从父asp.net表单启动
  • 是否有人尝试使用Telerik控件进行此操作并遇到问题
  • 编辑 克雷格指出,身份证可能不同。还有两个问题:

  • 您能确保您在服务器上分配的id被实际使用吗
  • 使用getElementByName()是访问DOM元素的更好机制吗

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


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

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

    <%= theControl.ClientID %>
    
    
    

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

    我对同一组中的复选框使用getElementsByName


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

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

    David,我之所以向您发送这个答案,是因为我在代码中看到了同样的问题,而我找到的唯一真正的解决方案是我必须在两个地方支持“OnClick”函数。。。在我的例子中,我使用的是PetersDatePackage,但它是在Telerik RAD光带上

    在我的例子中,控件位于.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()];
    }
    
    一旦我做到了,它就成功了

    我不确定为什么,告诉你真相,这对我来说毫无意义,可能只是PDP包的一个问题

    // Dummy function?
    function OnIncidentDateChange()
    {
    }