首页 > 解决方案 > 单击按钮后禁用按钮并在进程结束后重新启用它

问题描述

我正在尝试调用将从 cshtml 页面生成的控制器方法。在控制器执行操作时,按钮必须保持禁用状态,并且必须在整个过程完成后才能启用。现在该按钮被禁用,但在该过程完成后它不会启用。此外,如果您刷新页面,即使该过程仍在进行,按钮也会启用,这不应该发生对于我如何实现这一点有什么帮助吗?

.cshtml 文件

function generate()
{
    $('generate').attr('disabled',true);
    alert('Process started')
    var date=$(#ReportFromDate).val();
    $ajax({
        url:@Url.Content("Home/GenerateReport"),
        type:"POST",
        data:{ReportFromDate:date},
        traditional:true,
        success:function(response) {
            //alert()
        }
    });
};

这是我调用上述 ajax 调用的地方

<input name="generate" id="generate" type="button" value="generate" onclick="generate">

控制器文件

[HttpGet]
public ActionResult Report()
{
   var reportModel= new ReportModel;
   return View("Report",reportModel)
}

[HttpPost]
public ActionResult GenerateReport()
{
   this.repository.generateReport(model);
   return View("Report");
}

标签: c#ajax

解决方案


问题是您在发送请求之前禁用按钮,但在完成 ajax 请求后不启用它。为此,您应该使用您的 ajax 请求的$('generate').removeAttr('disabled')内部successerror事件。

注意:也是$('generate')不正确的,您应该使用带前缀的类.或带前缀的 id访问元素#


推荐阅读