在母版页中不起作用 例如,这是我在外部js文件中的代码
function name_valid()
{
var a=document.getElementById("name_box");
if(a==null || a=="")
{
alert('Enter the name');
}
var b=document.getElementById("dob_box");
if( b==null || b=="")
{
alert('Enter the Date Of Birth');
}
}
内容页面: 内容持有人(负责人):
<script src="valid.js" type="text/javascript" language="javascript" ></script>
contentplaceholder1:
<asp:TextBox ID="name_box" runat="server" ></asp:TextBox>
<asp:Textbox Id="dob_box" runat="server"></asp:TextBox>
<asp:Button ID="submit_button" runat="server" Text="Submit" OnClientClick="name_valid()"/>
这里javascript执行名称文本框为空或在其中输入一些名称 请帮助我解决这个问题
答案 0 :(得分:3)
确保在HTML后加载JavaScript文件。可能是您的JavaScript试图在ID存在于页面之前引用它。
或确保在文档准备好后执行JavaScript。如果你没有使用库,你应该研究jQuery是如何做到的。
答案 1 :(得分:0)
不要忘记用</script>
首先,你没有陈述var a。
您是否尝试将此功能放入页面进行测试?
content place holder(head):
<script type="text/javascript" language="javascript">
// your function
</script>
最后一件事,不是你的ASP代码,但我认为document.getElementById("dob_box");
不会返回输入的值,而是使用document.getElementById("dob_box").value;
。
//编辑:
似乎在你的ASP脚本中,输入的名称(和/或id)发生了变化,如下所示:
do_box&gt;&gt; ctl00_ContentPlaceHolder_do_box
您可能知道为测试它们而生成的真实姓名/ ID输入。 所以你应该做那样的事情来了解它们:
function name_valid()
{
var values=null;
for(id in document.forms[0].elements)
{
realName=document.forms[0].elements[id].name;
realId=document.forms[0].elements[id].id;
value=document.forms[0].elements[id].value;
values+=id+' : '+realId+' : '+realName+' : '+value+'\n';
}
alert(values);
}
答案 2 :(得分:0)
即使我从外部javascript获取母版页控件ID时也遇到了同样的问题...
Atlast我可以在经过多次试验和错误后得到解决方案......
这是我的代码。
在.aspx
页面,
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
<script type="text/javascript" language="javascript" src="Scripts/JScript.js">
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="BodyContent" Runat="Server">
<asp:TextBox ID="txtEmployeeNumber" runat="server" ClientIDMode="Static">
</asp:TextBox>
</asp:Content>
添加控件后,运行您的页面并查看视图源... 检查该查看源中的表单ID。
我的表单ID是ctl01
在JScript.js
中,像这样调用文本框ID
var txtEmployeeNumber = document.forms.ctl01.elements.ctl00$BodyContent$txtEmployeeNumber.value;
我测试过这个并且工作得很好。
希望这可以帮助你...
答案 3 :(得分:0)
要在内容页面中放置控件ID
var name = document.getElementById(“&lt;%= myControlname.ClientID%&gt;”;;)
答案 4 :(得分:0)
我自己遇到了这个问题。我在控制台中看到一条错误消息:
"TypeError: document.getElementById(...) is null"
你有这个错误吗?如果是这样,你的页面还没有生成HTML,你需要在HTML之后放置你的JS链接。
PS:我会在Seth的回答中对此进行评论,但我在这个网站上没有足够的声望点。抱歉Stack Overflow :(