【问题标题】:Button properties not changing on click event按钮属性在单击事件时不会改变
【发布时间】:2014-03-10 12:56:39
【问题描述】:

这可能很简单,但是当页面有效时,按钮文本和启用状态不会改变。

我在 web 表单上有一个按钮,在保存点击事件后面有以下代码:

if (Page.IsValid) {
    btnSave.Enabled = false;
    btnSave.Text = "Saving, please wait...";

    // Save method, etc...        
}

【问题讨论】:

  • 您是否在页面生命周期的其他地方(例如,在 Page_Load 或 Page_PreRender 中)设置 Enabled 和 Text 属性?
  • 您希望它们何时更改?在您运行命令之后(就在您开始保存项目之前)在客户端?
  • @BrianDriscoll 没有。这是唯一的地方!
  • @Markus 我希望它们在用户单击保存按钮并满足所有验证规则时进行更改。

标签: c# asp.net button postback


【解决方案1】:

您首先设置按钮启用状态和文本,然后运行您的保存方法。

这一切都发生在服务器端,在由按钮单击引起的请求中。在您的 Save 方法运行之前,客户端浏览器不会收到完整的响应。

如果您希望在运行 Save 方法之前更改 Button,则必须在客户端使用 JavaScript 进行更改。

【讨论】:

  • 在这种情况下,我假设有一种方法可以检查页面在 javascript 中是否有效?
  • 我假设你在哪里使用 ASP.NET 验证器?页面如何知道它是有效的?
  • 通过执行验证的 jquery 脚本。
  • 那么 jQuery 是如何将IsValid 值传递给服务器端的 Page 对象的呢?
【解决方案2】:

我猜您正试图禁止用户在处理过程中重复单击“保存”按钮。

但是代码是在服务器端编写的,浏览器最终只会得到响应。 要实现您想要做的事情,您需要禁用客户端的按钮。

这可以使用 javascript 并处理按钮的 hte onClientClick 事件来完成。

阅读地址:http://encosia.com/disable-a-button-control-during-postback/

<asp:Button runat="server" ID="BtnSubmit" 
  OnClientClick="this.disabled = true; this.value = 'Submitting...';" 
  UseSubmitBehavior="false" 
  OnClick="BtnSubmit_Click" 
  Text="Submit Me!" />

注意:这适用于完整的回发,不适用于启用 ajax 的场景。

编辑:试试这个

<asp:Button ID="Button1" UseSubmitBehavior="false" 
    runat="server" Text="Button" OnClientClick="DisableAfterValidation(this)" OnClick="Button1_Click" />

<script>
        function DisableAfterValidation(btn) {

            if (typeof (Page_ClientValidate) == 'function') {
                var isPageValid = Page_ClientValidate();
                if (isPageValid) {                        
                    btn.disabled = true;
                    btn.value = "please wait...";
                }
            }
        }
</script>

【讨论】:

  • 我最初有这个,但是,不管验证如何,这都会禁用按钮。
  • 因为Page_ClientValidate 需要 ASP.NET 验证器,而不是 jQuery 验证。永远都是真的。
  • 啊我完全错过了 OP 正在使用 jQuery 验证
猜你喜欢
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
  • 2012-01-19
  • 2013-12-18
  • 2014-12-20
  • 2023-03-13
相关资源
最近更新 更多