错误:
Microsoft JScript runtime error: 'ctl00_ContentPlaceHolder1_txtAdmDate' is undefined
代码:
<input ID="txtAdmDate" runat="server" readonly="readonly" type="text"
tabindex="23" clientidmode="AutoID" />
<a href="#" onclick="showCalendarControl(ctl00_ContentPlaceHolder1_txtAdmDate)">
<img border="0" src="images/SmallCalendar.jpg"
style="width: 20px; height: 20px" /></a>
使用Javascript:
function showCalendarControl(textField) {
calendarControl.show(textField);
}
html呈现源:
<input name="ctl00$ContentPlaceHolder1$txtAdmDate" type="text" id="ctl00_ContentPlaceHolder1_txtAdmDate" readonly="readonly" tabindex="23" />
<a href="#" onclick="showCalendarControl(ctl00_ContentPlaceHolder1_txtAdmDate)">
<img border="0" src="images/SmallCalendar.jpg"
style="width: 20px; height: 20px" /></a>
虽然html呈现源显示控件的id是ctl00_ContentPlaceHolder1_txtAdmDate并且同样传递给javascript函数生成错误。我已经尝试将clientidmode设置为Autoid和static但是没有任何效果。需要你们帮助解决这个问题。
答案 0 :(得分:0)
当你这样说时:
showCalendarControl(ctl00_ContentPlaceHolder1_txtAdmDate)
您假设ctl00_ContentPlaceHolder1_txtAdmDate
是变量但它不是变量,它只是一个DOM id
属性。你可以这样说:
showCalendarControl(document.getElementById('ctl00_ContentPlaceHolder1_txtAdmDate'))
将其转换为函数调用中的对象,或者您可以将ID发送到showCalendarControl
并让它将ID转换为对象:
onclick="showCalendarControl('ctl00_ContentPlaceHolder1_txtAdmDate')"
然后调整showCalendarControl
:
function showCalendarControl(textFieldId) {
var textField = document.getElementById(textFieldId);
calendarControl.show(textField);
}
答案 1 :(得分:0)
首先,它看起来像是在Master Page或User Control中(因此名称为mangling),在这种情况下,你不应该假设通过硬编码来破坏名称。如果您使用其他母版页或将用户控件移动到另一个页面,则错误的名称可能会有所不同。要解决此问题,请改用ClientID属性。
此外,您不能直接通过名称引用控件以让Javascript找到它,因为控件不是全局变量。相反,您可以使用document.getElementById来查看控件的句柄。
<a href="#" onclick="showCalendarControl(document.getElementById('<%=txtAdmDate.ClientID%>')">