按钮属性在单击事件时不改变

本文关键字:改变 事件 单击 属性 按钮 | 更新日期: 2023-09-27 17:49:21

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

我在web表单上有一个按钮,下面的代码在save click事件后面:

if (Page.IsValid) {
    btnSave.Enabled = false;
    btnSave.Text = "Saving, please wait...";
    // Save method, etc...        
}

按钮属性在单击事件时不改变

首先设置Button Enabled状态和Text,然后运行保存方法。

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

如果你想在你的Save方法运行之前改变你的Button,你必须在客户端使用JavaScript。

我猜你是想让用户在处理过程中反复点击保存按钮。

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

这可以使用javascript和处理按钮的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的场景中。

编辑:try this

<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>