Javascript函数改变ASP文本框的值?

时间:2014-12-08 16:56:17

标签: javascript c# asp.net

这有点奇怪。我在我的代码中得到了这段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;。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

ASP.NET更改了文本框的ID,因此在服务器上呈现后它不会是'txtePro'。不要在JS函数中引用它,而是尝试使用内联C#来获取正确的ID。

function txtEPro_OnFocus() {
    var elem = document.getElementById('<%= txtePro.ClientID %>');
    elem.value = "";

    alert("Hello there");
}