Javascript 按钮事件不是';t在禁用IE9和IE8中的按钮后触发
我的页面上有一个提交按钮。在客户端单击submit按钮时,我正在使用以下Javascript函数: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;
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()
禁用按钮后