【问题标题】:Does C# has any methods to execute Javascript function when button is pressed?C# 是否有任何方法可以在按下按钮时执行 Javascript 函数?
【发布时间】:2013-09-16 07:09:25
【问题描述】:

我的情况如下:

我的 aspx 页面上有 OnTextChanged 事件处理程序,从代码隐藏调用 TextChanged() 方法。现在,我需要在TextChanged() 方法的末尾运行一个javascript 脚本。我怎样才能做到这一点? ScriptManager 是否有任何方法,只有在我更改文本框中的文本时才会执行脚本?

我可能是一个重复的问题,但我找不到脚本管理器是否有任何方法可以在注册后立即运行脚本。

实际的问题是,我需要在 TextChanged() 方法的末尾放置一个脚本,并且该脚本只需要将焦点从一个 html 元素设置到另一个。

【问题讨论】:

  • 不推荐。除非确实需要,否则使用 jQuery/Javascript 处理 onchange,应避免使用服务器端 Text_Changed。
  • @fahadash 为什么?谁说必须使用 AJAX?更改文本时提交表单是完全合法的,也不是坏习惯。
  • 许多场景不需要回发,人们发现当电子邮件地址不正确时,人们使用它来将文本框变为红色,而这可以通过 1 行 js 代码轻松完成。

标签: c# javascript asp.net scriptmanager


【解决方案1】:

您可以简单地在其背后的代码中发送所需的 JavaScript:

public void TextChanged(object sender, EventArgs e)
{
    //...
    this.ClientScript.RegisterStartupScript(this.Page.GetType(), "text_changed", "alert('Text was changed');", true);
}

只有在后面的代码中执行TextChanged() 后才会显示警报。

如果您不在 Page 实例(例如静态库)中,则有这样的代码,假设您在 Page 的上下文中,而不是在某个 HTTP 模块或类似的东西中。

ScriptManager.RegisterStartupScript(HttpContext.Current.Handler as Page, typeof(Page), "text_changed", "alert('Text was changed');", true);

【讨论】:

  • 你能告诉我 ScriptManager.RegisterStartupScript 和 ClientScript.RegisterStartupScript 有什么区别吗,因为我不能使用 this.ClientScript...('...Pagename' 不包含 clientscript 的定义)-我参考了 system.web.ui
  • @Marek,我认为他的代码显示了一个名为“ClientScript”的 ScriptManager 实例。在你的类中声明一个 ScriptManager,并在你的 TextChanged 事件处理程序中调用它。
【解决方案2】:

在您要执行脚本的文本更改函数中写入以下代码。并将您的 java 脚本函数名称放在我粗体文本的位置

**>ClientScript.RegisterStartupScript(this.GetType(), "Javascript","JavaScriptFunctionName()", true);**

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多