Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用document.getElementById在外部JavaScript文件中进行表单验证_Javascript_Asp.net - Fatal编程技术网

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

使用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,这些条件永远不会发生。我在用户控

My document.getElementById函数对已知存在的值返回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%>');