document.getelementbyid在母版页内容页的外部javascript中不起作用
document.getelementbyid is not working in external javascript in content page of master page
在外部javascript文件中调用asp文本框控件在母版页中不起作用
例如,这是我在外部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>
内容占位符1:
<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要么执行名称文本框为空,要么在其中输入一些名称请帮我解决这个问题
确保在HTML之后加载JavaScript文件。可能是您的JavaScript试图在ID存在于页面中之前引用该ID。
或者确保JavaScript在文档准备好后执行。如果你没有使用库,你应该看看jQuery是如何做到的。
别忘了用</script>
关闭你的js标签
首先,你没有说明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>>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);
}
即使我在从外部javascript获取母版页控件id时也遇到了同样的问题。。。
至少我可以在经历了很多尝试和错误之后得到解决方案。。。
这是我的密码。
在.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;
我测试了这个,工作非常好。
希望这能帮助你。。。
获取放置在内容页面内的控件id
var name=document.getElementById("<%=myControlname.ClientID%>";)
我自己也遇到过这个问题。我在控制台上收到一条错误消息,上面写着:
"TypeError: document.getElementById(...) is null"
你有这个错误吗?如果是这样的话,您的页面还没有生成HTML,您需要将JS链接放在HTML之后。
附言:我本来会在赛斯的回答下对此发表评论,但我在这个网站上没有足够的信誉点。抱歉堆栈溢出:(
- 使用html中的外部javascript进行数据验证
- 将变量传递给外部Javascript
- 关于引入外部javascript文件的问题&css通过https
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- HTML外部javascript加载另一个javascript
- 如何在定义js文件后为外部javascript文件设置变量
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 如何在小部件中添加外部javascript库和样式表
- 外部JavaScript验证不起作用
- Chrome扩展无法通过清单加载外部javascript
- 动态虚拟目录和外部 JavaScript 链接
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- 如何从窗体调用外部javascript方法
- 如何使用外部Javascript库(如jQuery)重命名Google闭包样式表
- 如何使用Java在WebDriver中调用外部JavaScript
- 从Haml调用外部javascript中的ruby数组
- 在选择更改时更改从外部javascript生成的flash播放器
- 缓存javascript失败,因为使用了外部javascript
- 在AngularJS中手动加载和卸载外部javascript