禁用/更改按钮文本,直到单击过程完成?

时间:2014-05-03 08:57:42

标签: c# javascript jquery asp.net vb.net

我的网页表单中有asp按钮(runat =“server”)到更新面板。

<asp:UpdatePanel ID="UpdatePanelDoIt" runat="server">
<asp:Literal ID="LiteralDoIt" runat="server"></asp:Literal>
   <asp:Button ID="ButtonDoIt" runat="server" Text="DoIt"/>     
</asp:UpdatePanel>   

当我点击时,此按钮会执行某些操作。

Private Sub ButtonDoIt_Click(sender As Object, e As EventArgs) Handles ButtonDoIt.Click

   me.ButtonDoIt.Enabled=False
   me.ButtonDoIt.Text="Please wait..."

   bla bla bla bla 'it takse one or two minute
   LiteralDoIt.Text="<a href= bla bla"
   bla bla bla bla

   'finish process

   me.ButtonDoIt.Enabled=true
   me.ButtonDoIt.Text="Process Complete!"

End Sub

但点击此按钮后,我的按钮未被禁用或未更改文字

只有在处理完成后才能看到“处理完成”。

在Windows窗体中,我总是在更改buttontext行后使用“application.doevent”。我看到在我的表单上更改。

但asp.net不允许这样做。(我使用的是vb.net)

我该怎么办?

非常感谢您的兴趣。

3 个答案:

答案 0 :(得分:1)

试试这个

<强> HTML

<input type="submit" id="btnid" value="Save" />

<强> JS

 $(function(){
       $('#btnid').click(function(){
        $(this).val('processing...');
        $(this).prop('disabled',true);
        setTimeout(function(){$('#btnid').val('finished');$('#btnid').removeAttr('disabled');},5000);
    });
 });

<强> DEMO HERE

答案 1 :(得分:0)

您可以使用ajax,或者您需要估算时间并按照@Kiranramchadran的方式进行操作。

在VB.NET中使用AJAX查看以下示例

班级名称

Public Class NameHere

VB Page_Load

Ajax.Utility.RegisterTypeForAjax(GetType(NameHere), Me.Page)

VB功能

<Ajax.AjaxMethod()> _
Public Function ButtonClick() ...

<强>的Javascript

$('#btn').click(function(){
    // Here you can disable your button

    // Call your ajax function
    NameHere.ButtonClick();
});

答案 2 :(得分:0)

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Disable Button and Change Text of button</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sc" runat="server" EnablePartialRendering="true">
</asp:ScriptManager>

 <script type="text/javascript">
 Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
 function BeginRequestHandler(sender, args) {
 document.getElementById('<%= lblMessage.ClientID %>').innerText = "Processing...";
 args.get_postBackElement().disabled = true;
 }
 </script>

<asp:UpdatePanel ID="updpnlSubmit" runat="server">
<ContentTemplate>
<asp:Button ID="btnSubmit" Text="Submit" runat="server" OnClick="btnSubmit_Click" />
<asp:Label ID="lblMessage" runat="server"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

在源页面中添加脚本标记。更改代码中按钮的ID。您可以禁用该按钮,直到该过程完成执行。