2

我的页面上有一个提交按钮。在客户端单击提交按钮时,我正在使用以下 Javascript 函数:

function SubmitDisable() {
var valid = Page_ClientValidate();
if (valid) {
    document.getElementById("btnSubmit").style.cursor = "wait";
    document.getElementById("btnSubmit").disabled = true;
    document.getElementById("btnSubmit").innerText = "Submitting...";

}
else {
    SubmitEnable();
    ApproveEnable();
   }
 }

它在 中工作正常IE10,但在ChromeandAurora中不IE9工作IE8

每当我单击submit button它时,它就会变灰button并将其文本更改为 Submitting 并page挂出。它没有submitpage

我如何解决这个issue问题?期待您的回复。IE9IE8

4

2 回答 2

2

听起来像使用 ASP.NET 执行此操作将要求您在禁用按钮doPostBack 后调用必要的:

服务器端实现:

protected void Page_Load(object o, EventArgs e) {
  btnSubmit.Attributes.Add("onclick", "SubmitDisable();" + Page.ClientScript.GetPostBackEventReference(btnSubmit, "").ToString());
}

或者

客户端实现:

function SubmitDisable() {
var valid = Page_ClientValidate();
if (valid) {
    document.getElementById("btnSubmit").style.cursor = "wait";
    document.getElementById("btnSubmit").disabled = true;
    document.getElementById("btnSubmit").innerText = "Submitting...";
    <%=Page.ClientScript.GetPostBackEventReference(btnSubmit, "").ToString()%>
}
else {
    SubmitEnable();
    ApproveEnable();
   }
 }

本质上,这会将以下代码添加到您的函数中:

__doPostBack('MyPanel$btnSubmit','');

禁用按钮后,强制 .NET 从所需控件执行回发。

于 2013-07-31T06:45:33.113 回答
1

我对此感到惊讶,但听起来禁用按钮会阻止提交。

如果是这样,您可以将禁用它的时间延迟到人类无法察觉的程度:

function SubmitDisable() {
    var valid = Page_ClientValidate();
    if (valid) {
        var btn = document.getElementById("btnSubmit");
        btn.style.cursor = "wait";
        btn.innerText = "Submitting...";
        setTimeout(function () {
            btn.disabled = true;
        }, 0);
    }
    else {
        SubmitEnable();
        ApproveEnable();
    }
}

这会使按钮在单击事件和表单提交完成期间处于启用状态,但随后在大约 10 毫秒左右的时间内将其禁用。

于 2013-07-31T06:43:13.723 回答