这有点奇怪。我在我的代码中得到了这段ASP:
<td style="line-height: 230%;">
<asp:TextBox ID="txtePro" runat="server" CssClass="textbox" Font-Size="Small"
Height="18px" Width="100px" Visible="False" Wrap="False"
OnTextChanged="txtEPro_OnLeave" OnFocus="txtEPro_OnFocus()"
AutoPostBack="true"></asp:TextBox>
<asp:MaskedEditExtender ID="MeeePro" runat="server" Mask="9999999" MaskType="None"
TargetControlID="txtePro" PromptCharacter="_" />
<asp:MaskedEditExtender ID="MeePRD" runat="server" Mask="999999" MaskType="None"
TargetControlID="txtePro" PromptCharacter="_" />
我在同一个ASP文件中也有以下功能:
<script type = "text/javascript">
function txtEPro_OnFocus() {
var elem = document.getElementById('txtePro');
elem.value = "";
alert("Hello there");
}
</script>
如果我注释掉Javascript函数的前两行,我会收到一个提示框,提示,&#34; Hello there&#34;。所以,我知道函数在OnFocus事件中触发。但是,当我将前两行放回到函数中时,它说它无法找到&#34; txtePro&#34;。
上的错误elem.value = "";
行并说,
Default.aspx
第176行第13行未处理的异常0x800a138f - Microsoft JScript运行时错误:无法设置值 属性&#39;值&#39 ;:对象为null或未定义
如果我将鼠标悬停在&#34; elem&#34;上,它会将值显示为&#34; NULL&#34;。
有什么想法吗?
答案 0 :(得分:2)
ASP.NET更改了文本框的ID,因此在服务器上呈现后它不会是'txtePro'。不要在JS函数中引用它,而是尝试使用内联C#来获取正确的ID。
function txtEPro_OnFocus() {
var elem = document.getElementById('<%= txtePro.ClientID %>');
elem.value = "";
alert("Hello there");
}