2012-01-09 36 views
1

在外部JavaScript文件中调用asp文本框控件在母版页中不起作用。
对于如这是我在外部的js代码文件document.getelementbyid在主页面的内容页面中无法在外部javascript中工作

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

在你的javascript代码中有一个错误,因为变量'a'没有被定义,只是让你知道。 – 2012-01-09 19:32:05

回答

3

确保您的JavaScript文件在HTML之后加载。这可能是因为你的JavaScript试图在ID存在于页面之前引用它。

或者确保在文档准备就绪后执行JavaScript。如果你不使用库,你应该看看jQuery是如何做到的。

+0

只在内容页面中占位符头部tad和内容位置holde体标签只出口 – Partha 2012-01-09 19:20:58

0

不要忘了与</script>

首先关闭您的JS代码,您没有说明风险价值。

您是否试图将此功能放入您的网页中进行测试?

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

您可能知道生成的真实姓名/编号输入来测试它们。 所以,你应该做这样的事情知道他们:

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);  
} 
+0

如果将'src'属性设置为脚本,则不能在'

0

我自己遇到了这个问题。我在控制台中看到一条错误消息:

"TypeError: document.getElementById(...) is null" 

您是否有此错误?如果是这样,你的页面还没有生成HTML,你需要把你的JS链接放在HTML之后。 PS:我会刚刚在Seth的回答下评论这个,但我没有足够的声望点在这个网站上。对不起堆栈溢出:(

相关问题