2013-07-31 44 views
2

我的頁面上有一個提交按鈕。在提交按鈕我使用下面的JavaScript函數的客戶端點擊:禁用IE9和IE8中的按鈕後,按鈕事件不會觸發

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

它在IE10ChromeAurora工作正常,但在IE9IE8不工作。

每當我點擊submit button它只是灰色button並將其文本更改爲提交和page掛出。它不是submitpage

我怎麼能解決這issueIE9IE8? 期待您的回覆。

+0

您是否嘗試過這種方式而不禁用按鈕? – rps

+0

是的,在此功能之前,它工作正常。 –

回答

2

聽起來像ASP.NET這樣做將需要致電必要doPostBack後的按鈕已被禁用:

服務器端執行:

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

OR

客戶端實現:

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從所需的控制做了回發。

+0

讓我試試這個,如果它真的有效。 :) –

+0

謝謝。它在'IE8'和'IE9'中工作。我使用了「服務器端實現」。但我想用'客戶端實現'。我已經在單獨的'js'文件中寫入了禁用函數。它不支持'JS'文件中的'Page.ClientScript'。任何替代方案? –

+1

@CodeRider是的,這有點難,因爲你無法在外部文件中處理GetPostBackEventReference。您必須在頁面上包含腳本,或者使用服務器端版本,或者將'doPostBack'的引用傳遞給您的外部文件,即將其放入您的.aspx頁面:'' - 然後在你的外部javascript文件中,你可以在禁用按鈕 – CodingIntrigue

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

這使得click事件和表單提交的完成過程中啓用按鈕,但隨後在大約10毫秒左右,禁用它。

+0

讓我試試這個。 :) –

+0

它不起作用 –

+0

ASP.Net聽起來像你的方式,而不是瀏覽器。 –