单击按钮后禁用按钮,并在过程结束后重新启用按钮

时间:2019-03-24 07:08:31

标签: c# ajax

我正在尝试调用将从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");
}

1 个答案:

答案 0 :(得分:1)

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

注意:同样,$('generate')是不正确的,您应该访问具有.前缀的类或具有#前缀的id的元素。