【问题标题】:How to fire both client side and server side click events of button?如何触发按钮的客户端和服务器端单击事件?
【发布时间】:2013-01-22 11:27:12
【问题描述】:

对于一个要求,我需要在 ASP.NET 中触发一个按钮的客户端和服务器端单击事件。那可能吗?我试过像下面这样。但它不会触发客户端点击事件。

[ASPX]

  <asp:Button ID="Button1" runat="server" Text="Disable" OnClick="disable"  CausesValidation="false"  OnClientClick="return click();" />

[脚本]

 function click()
 {
        alert("hi")

  }

【问题讨论】:

  • 您的代码似乎没问题,它应该可以工作。您能说出单击按钮后的行为吗?
  • 它触发服务器端点击事件。但不是客户端事件。
  • 所有事件都是客户端。没有服务器端事件之类的东西。 ASP 的语法就是让它看起来那样。众多原因之一,我避免使用 ASP。
  • 是的。错误在我的代码中!我将客户端事件指定为“click();” .这就是我所犯的错误。无论如何,感谢您的帮助:)。我现在觉得自己很傻!!
  • 我已将客户端点击事件重命名为“disable()”,现在可以使用了。感谢大家的帮助。

标签: javascript jquery asp.net


【解决方案1】:

是的,这是可能的。如果客户端 Javascript 返回true,则将调用服务器端方法。

例如:

function click()
{
    return confirm("Do you want to continue?");
}

【讨论】:

  • 对我来说服务器端事件被调用而不触发客户端事件。我被困在那儿了。
  • 听起来像是 Javascript 错误 - 检查 Javascript 代码是否有效。
  • 是的。错误在我的代码中!我将客户端事件指定为“click();” .这就是我所犯的错误。无论如何,感谢您的帮助:)。我现在觉得自己很傻!!。
  • 很高兴你把它整理好了。我们都需要不时的帮助! :)
【解决方案2】:
<asp:Button ID="Button1" runat="server" Text="Disable" OnClick="disable"  CausesValidation="false"  OnClientClick="click();" />

function click()
{
   alert("hi");
   this.click();

}

【讨论】:

  • this.click() 会不会再次调用OnClientClick?无论哪种方式,这都不是应该的。
【解决方案3】:

必须在您的代码中调用客户端函数。唯一取决于它返回的服务器端函数将被调用:

   function Click() {
    alert('Hi');
    if (somecondition) {
        return true;
    }
    return false;
}

还要检查您的服务器端事件处理程序是否如您在代码“禁用”中提到的那样命名正确。我认为这不是正确的名称。

还要检查你是否真的需要 CausesValidation 属性?因为这将用于您的验证器,由于手动调用客户端功能,可能不再需要它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    相关资源
    最近更新 更多