我有包含字段的asp.net表单。当我访问此窗口时,我的javascript函数可以使用getElementById()方法通过DOM访问字段,当我将postpack发送到服务器时,我收到客户端所做的更新。
但是,当我使用Telerik的RadWindow控件将窗体作为子窗口启动时,javascript无法访问子窗体上的隐藏字段。相反,我得到了空。
我的问题是:
修改 克雷格指出,身份证可能会有所不同。还有两个问题:
答案 0 :(得分:1)
元素的ID很可能不是你想象的那样。检查呈现的页面,看看ID是否存在。我猜这个页面被赋予了不同的ID,因为它是在另一个控件中呈现的。
如果是这种情况,您可以让表单呈现一些脚本,通过访问控件客户端ID来返回元素ID。
答案 1 :(得分:1)
要获取asp.net控件的ID,请执行以下操作:
<%= theControl.ClientID %>
getElementByName不像getElementById那样常用。对于页面上的每个元素,ID属性应该是唯一的,而name属性可以是重复的。
答案 2 :(得分:1)
就我而言,控件位于.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包的问题...
答案 3 :(得分:0)
我对同一组中的复选框使用getElementsByName。
至于控件的ID,TonyB有正确的想法,但请确保您在PreRender事件处理程序中引用ClientID属性,因为如果您在页面生命周期中过早地执行它,它将无法使用)
答案 4 :(得分:0)
在RadWindow加载之前,javascript是否有可能尝试获取对隐藏字段的引用?我相信我之前遇到过这种情况,不得不使用setTimeout来解决这个问题。