【发布时间】:2011-04-28 09:45:39
【问题描述】:
我有一些用外部 javascript 文件编写的 javascript 函数。 我已将该文件包含在我的 asp.net 页面标题部分中。 但是我无法理解如何从文件后面的代码中调用函数。 例如,我想在文本框的 onkeypress 事件上调用某个函数“tacount”。我怎么可能这样做?
【问题讨论】:
标签: c# javascript asp.net
我有一些用外部 javascript 文件编写的 javascript 函数。 我已将该文件包含在我的 asp.net 页面标题部分中。 但是我无法理解如何从文件后面的代码中调用函数。 例如,我想在文本框的 onkeypress 事件上调用某个函数“tacount”。我怎么可能这样做?
【问题讨论】:
标签: c# javascript asp.net
您不能从server side 代码调用client side 函数。
您可以发出 javascript 以从您的服务器端代码调用这些函数,但这会变得非常混乱。
不要将javascript函数附加到服务器端事件,而是在客户端这样做。
使用 jQuery 等库将事件附加到客户端的文本框。
【讨论】:
看看 here 可以从后面的代码中进行的所有 javascript 调用,但基本上你必须在后面的代码中调用以下代码:
ScriptManager.RegisterStartupScript(this,this.getType(),"tacount",'tacount();',true);
这将在客户端完成回发后触发,但建议仅从客户端调用 javascript。
编辑:
您的文件位于外部 javascript 文件中这一事实并不重要,因为浏览器将调用它与内联 javascript 相同。
您所要做的就是像往常一样在您的设计器代码中调用该函数,即
<asp:TextBox runat="server" onkeypress='return tacount();'/>
【讨论】:
如果您想从代码隐藏文件中调用 JavaScript 函数,您应该使用@TBohnen.jnr 建议的代码,即:
ScriptManager.RegisterStartupScript(this,this.getType(),"fnMyFunctionNameFromServiceSide_tacount",'tacount();',true);
但是,您应该注意,fnMyFunctionNameFromServiceSide_tacount 不应出现在您的标记代码或任何包含的 javascript 文件中。
如果您想从外部包含的 javascript 文件中调用 javascript 函数,请使用以下代码:
<asp:TextBox id="myTextBox" runat="server" onkeypress="javascript: return tacount();"/>
但是,如果上述方法对您不起作用,则表示找不到该功能。在这种情况下,我建议您使用 FireBug 来查找找不到 javascript 函数的确切原因。可能是函数本身不存在,或者函数本身存在一些 javascript 错误。
希望这会有所帮助。
【讨论】: