2013-08-03 49 views
1

这是我的用户控制example.ascx如何调用Java脚本函数从用户控制

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="add.ascx.cs" Inherits="WebApplication3.add" %> 

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %> 

<link rel="Stylesheet" href="style.css" /> 


<script type="text/javascript"> 
function toDo() 
{ 
//Do something 
}; 
</script> 


<asp:TextBox ID="txt_name" onkeydown="toDo()" runat="server" CssClass="input_txt"> </asp:TextBox> 

当我加载我的网页,我的用户控件添加到页面中,我不能调用Java脚本函数在所有。 错误是:

Java脚本函数toDo是未定义的。它真的累死我了:(

UPDATE ***

我的用户控件添加到由代码页这里是服务器端代码到该用户控件添加到页面:

protected void lnk_new_Click(object sender, EventArgs e) 
    { 
     add add_view = LoadControl("add.ascx") as add; 
     Panel pnl_view = (Panel)ContentPlaceHolder1.FindControl("pnl_view"); 
     pnl_view.Controls.Clear(); 
     pnl_view.Controls.Add(add_view); 

    } 

而且这是我得到的错误: My screenshot of error

+0

该问题可能是因为您的用户控件在页面第一次加载时不可见。确保你的toDo函数实际上是通过检查页面源来呈现的。 –

+0

ho要那样做?任何帮助? –

+0

我在另一个项目上测试过它,它工作。但在我的项目中不起作用。 –

回答

1

我不知道你在做什么,这是我的标记在用户控制其具有javascript函数TODO()藏汉:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="add.ascx.cs" Inherits="add" %> 
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %> 

<link rel="Stylesheet" href="style.css" /> 

<script type="text/javascript"> 
    function toDo() { 
     alert("This worked!"); 
    }; 
</script> 
<asp:TextBox ID="txt_name" onkeydown="toDo()" runat="server" CssClass="input_txt"> </asp:TextBox> 

,这里是我的执行页:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 

<%@ Register src="add.ascx" tagname="add" tagprefix="uc1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <uc1:add ID="WebUserControl1" runat="server" /> 

    </div> 
    </form> 
</body> 
</html> 

当我按在文本框中任意键,我收到消息从TODO()函数:

enter image description here

所以,你提供的代码没有问题。

+0

不,它不工作,我更新了我的问题。请看看 –

+0

请注意,我的用户控件位于更新面板中 –

0

问题是我的用户控件中的函数在添加用户控件时不存在! 我添加了相同的Java脚本函数到我的母版页的头部分,它工作。 虽然我仍然不知道这个例外的原因,但我得到了我想要的。

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebApplication3.Site" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<link rel="Stylesheet" href="style.css" /> 

<script type="text/javascript"> 
    function toDo() { 
     alert("HAHAH"); 
    }; 
</script> 
</head>