使用document.getElementById在外部JavaScript文件中进行表单验证

时间:2012-12-20 20:12:46

标签: javascript asp.net

我的document.getElementById函数对我知道的值返回null。具体来说,我尝试:

//in an external .js file
var UserName = document.getElementById('<%=_username.ClientID%>');

使用某些条件对其进行测试,由于元素id值为null,因此不会发生这种情况。我在这里在用户控制文件中定义了_username:

...
<fieldset class="login"> 
    <legend class="login">Login</legend>
    <label for="<%=_username.ClientID%>">
        User Name:</label>
    <asp:TextBox ID="_username" runat="server" CssClass="login" />
    <label for="<%=_password.ClientID%>">
        Password:</label>
    <asp:TextBox ID="_password" runat="server" CssClass="login" TextMode="Password" />
    <br />
    <span class="response">
        <asp:Literal ID="_response" runat="server" /></span>        
    <asp:Button ID="_login" runat="server" Text="Login"/>
</fieldset>

我通过测试一个不需要使用getElementById()的简单函数来验证我的页面正在监听javascript文件。

2 个答案:

答案 0 :(得分:0)

假设你说的其余部分是真的,问题很可能是

var UserName = document.getElementById('<%=_username.ClientID%>');

在dom准备好之前开始运行。尝试将此脚本移至body部分的最末端,以确保在此运行之前圆顶已准备就绪。

    <script type='text/javascript'>
        // rest of script
        var UserName = document.getElementById('<%=_username.ClientID%>');
        // rest of script
    </script>
</body>

答案 1 :(得分:0)

你的标题是“外部javascript文件”。如果这是在外部javascript文件中:

var UserName = document.getElementById('<%=_username.ClientID%>');

这不起作用,因为<%= %>符号在JS文件中不起作用,只在ASPX或ASCX中起作用。