【问题标题】:external javascript file from asp.net C# page来自 asp.net C# 页面的外部 javascript 文件
【发布时间】:2011-04-28 09:45:39
【问题描述】:

我有一些用外部 javascript 文件编写的 javascript 函数。 我已将该文件包含在我的 asp.net 页面标题部分中。 但是我无法理解如何从文件后面的代码中调用函数。 例如,我想在文本框的 onkeypress 事件上调用某个函数“tacount”。我怎么可能这样做?

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    您不能从server side 代码调用client side 函数。

    可以发出 javascript 以从您的服务器端代码调用这些函数,但这会变得非常混乱。

    不要将javascript函数附加到服务器端事件,而是在客户端这样做。

    使用 jQuery 等库将事件附加到客户端的文本框。

    【讨论】:

      【解决方案2】:

      看看 here 可以从后面的代码中进行的所有 javascript 调用,但基本上你必须在后面的代码中调用以下代码:

      ScriptManager.RegisterStartupScript(this,this.getType(),"tacount",'tacount();',true);
      

      这将在客户端完成回发后触发,但建议仅从客户端调用 javascript。

      编辑

      您的文件位于外部 javascript 文件中这一事实并不重要,因为浏览器将调用它与内联 javascript 相同。

      您所要做的就是像往常一样在您的设计器代码中调用该函数,即

      <asp:TextBox runat="server" onkeypress='return tacount();'/>
      

      【讨论】:

      • 但首先要确保该脚本尚未在页面上注册
      • 我只想从客户端调用 javascript。为此需要做什么???
      • 我已经更新了我的答案;如果您需要更多帮助,请将您的设计器代码与文本框名称和要调用的函数一起粘贴
      • onkeypress 事件不会显示为文本框事件。这正是问题所在。
      • intellisense 不会启动它,因为它在 Visual Studio 中不受支持,但它会起作用,因为它将作为属性插入到您的 html 中的输入框中
      【解决方案3】:

      如果您想从代码隐藏文件中调用 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 错误。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 2014-05-06
        相关资源
        最近更新 更多