簡體   English   中英

用JS禁用“提交”按鈕后,文件下載后重新啟用

[英]After disabling a Submit button with JS, re-enable after file download

我正在研究ASP.NET應用程序。 當前,當用戶單擊某項上的“保存”時,我們禁用“保存”按鈕,將其文本更改為“正在保存...”,依此類推。 之所以可以正常工作,是因為該按鈕導致回發,從而導致加載了新頁面,在該頁面上不再禁用“保存”按鈕。

現在,我們希望將此操作應用於其他操作:發布(與保存沒有太大不同),導入(再次類似於保存,但基於用戶在上一步中上傳的數據),導出(將XML文件下載到用戶) )等

導出導致我遇到問題-該按鈕保持禁用狀態。 我認為這是因為服務器發回的是XML文件,而不是新的網頁,因此瀏覽器僅顯示同一頁面。

服務器端代碼遵循以下原則

Response.Clear();
Response.BufferOutput = true;
Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + whatever);
[push file contents into Response.OutputStream]
Response.End();

[不知道這是否是好的代碼-這不是我的-但卻能完成工作:)]

基本上,我想知道以下兩者之一:

  • 一種使服務器將響應以及XML發送回新頁面的方法,從而以與其他頁面相同的方式重新啟用按鈕,或者
  • 發送文件后,使瀏覽器/ JS重新啟用按鈕的一種方法。

看起來應該這樣做:基本上,設置與文件響應一個cookie,並讓瀏覽器以解鎖頁面等待該cookie。

問題可能是您根本不加載新頁面。

由於內容分配是附件,因此瀏覽器將不會重新加載頁面,而只會將服務器返回的內容保存到磁盤。

您需要以某種方式重新加載頁面,但是在獲取文件后如何執行此操作方面我沒有很好的想法。

有一個骯臟的hack。 您可以使用setTimeOut方法啟用和更改后退按鈕標題/圖像。

因此,您可以編寫類似於以下內容的服務器端代碼

btn.Attributes.Add(“ onclick”,“ this.disabled ='true'; this.value ='Processing ...'; _ doPostback(this,null); setTimeout(function(){啟用按鈕邏輯...。設置按鈕的文本/ img},);“);

服務器端下載附件事件不會完全同步,但是您可以根據服務器配置將超時設置為2-5秒。

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM