使用document.getElementById在外部JavaScript文件中进行表单验证
My document.getElementById函数对已知存在的值返回null。具体而言,我尝试:使用document.getElementById在外部JavaScript文件中进行表单验证,javascript,asp.net,Javascript,Asp.net,My document.getElementById函数对已知存在的值返回null。具体而言,我尝试: //in an external .js file var UserName = document.getElementById('<%=_username.ClientID%>'); //在外部.js文件中 var UserName=document.getElementById(“”); 并使用一些条件对其进行测试,由于元素id值为null,这些条件永远不会发生。我在用户控
//in an external .js file
var UserName = document.getElementById('<%=_username.ClientID%>');
//在外部.js文件中
var UserName=document.getElementById(“”);
并使用一些条件对其进行测试,由于元素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文件。假设您所说的其余内容为真,问题很可能是
var UserName = document.getElementById('<%=_username.ClientID%>');
你的标题是“外部javascript文件”。如果这在外部javascript文件中:
var UserName = document.getElementById('<%=_username.ClientID%>');
var UserName=document.getElementById(“”);
这将不起作用,因为符号在JS文件中不起作用,只有ASPX或ASCX。JS文件中有asp.net代码吗?js文件是由asp.net解析的吗?@Musa js文件不是由asp.net解析的。我记得在另一个线程中读取了类似的响应,但我正试图通过一个外部脚本文件来实现这一点。我在HTML的头部调用src;这还会导致DOM问题吗?@Nibirue-对此不确定,但我认为您可以像上面那样将脚本标记向下移动到身体的末端<代码>这是有意义的;那么,为_用户名检索ClientID的替代方法是什么呢?如果您可以保证它在客户端上完全是_用户名,而不是ct100 _contentplaceholder u用户名,那么您可以硬编码_用户名。否则,您可以将上面显示的代码放在ASP.NET中,然后您的脚本可以引用UserName变量(只要脚本是在创建变量的下面定义的)。
var UserName = document.getElementById('<%=_username.ClientID%>');