Javascript 按钮事件不是';t在禁用IE9和IE8中的按钮后触发

Javascript 按钮事件不是';t在禁用IE9和IE8中的按钮后触发,javascript,asp.net,.net,internet-explorer,Javascript,Asp.net,.net,Internet Explorer,我的页面上有一个提交按钮。在客户端单击submit按钮时,我正在使用以下Javascript函数: function SubmitDisable() { var valid = Page_ClientValidate(); if (valid) { document.getElementById("btnSubmit").style.cursor = "wait"; document.getElementById("btnSubmit").disabled = true;

我的页面上有一个提交按钮。在客户端单击submit按钮时,我正在使用以下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();
   }
 }
__doPostBack('MyPanel$btnSubmit','');
它在
IE10
Chrome
Aurora
中工作正常,但在
IE9
IE8
中不工作

每当我点击
submit按钮
时,它只会将
按钮变灰
,并将其文本更改为Submitting,页面就会挂起。它不
提交
页面

如何在
IE9
IE8
中解决此
问题?

期待您的回复。

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

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

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毫秒的时间内将其禁用。

使用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();
   }
 }

客户端实现:

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();
   }
 }

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

让我试试这个。:)听起来像是ASP.Net妨碍了您,而不是浏览器。您是否在不禁用按钮的情况下尝试了此操作?是的,在此功能之前,它工作正常。谢谢。它在
IE8
IE9
中工作。我使用了
服务器端实现
。但是我想使用
客户端实现
。我在单独的
js
文件中编写了禁用函数。它不支持
JS
文件中的
Page.ClientScript
。有其他方法吗?@CodeRider是的,这有点困难,因为你不能在外部文件中处理GetPostBackEventReference。您必须在页面上包含脚本,或者使用服务器端版本,或者将对
doPostBack
的引用传递到外部文件,即将其放入.aspx页面:
function SubmitForm(){}
-然后在外部javascript文件中只需调用
SubmitForm()
禁用按钮后