簡體   English   中英

單擊按鈕上的JS函數以刷新頁面

[英]Calling a JS function on a button click refreshes the page

我有一個ASP頁面,該頁面具有一個JS函數,該函數在HTML輸入按鈕單擊時被調用,但是每次單擊該按鈕時,頁面都會重新加載並返回到初始狀態。

我已使用這些標簽在服務器和客戶端禁用了緩存

<%
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
%>

<meta http-equiv="Expires" CONTENT="0"/>
<meta http-equiv="Cache-Control" CONTENT="no-cache"/>
<meta http-equiv="Pragma" CONTENT="no-cache"/>   

我試圖找出是什么原因導致頁面在單擊按鈕時刷新,而不是調用JS函數,但是沒有骰子。


如要求的是按鈕代碼

   <button class="textinput" id ="reloadData" onclick="reloadData()" title="Reload Data">Refresh</button>

而函數稱為

            function reloadData() {
            var DPS = document.getElementById("datepickerStart").value;
            var DPE = document.getElementById("datepickerEnd").value;

            var startDP = new Date(DPS);
            var endDP = new Date(DPE);

            var startDate = (startDP.format("isoDateTime")).replace(/:/g, '\\:');
            var endDate = (endDP.format("isoDateTime")).replace(/:/g, '\\:');

            layer.redraw();
            }

我認為這與調用函數無關,因為它只是重新調整了過濾器中的值。

該按鈕可能導致回發。 它以某種形式存在嗎?

讓javascript函數返回false以防止回發。

再利用reloadData<... id ="reloadData" onclick="reloadData()" ...>可能會在某些瀏覽器有問題,雖然你不會指望它。

無論如何,請嘗試在javascript(而不是HTML)中附加onclick處理程序,如下所示:

HTML:

<button class="textinput" id="reloadData" title="Reload Data">Refresh</button>

Javascript:

window.onload = function(){
    var reloadDataButton = document.getElementById('reloadData');
    var DPS = document.getElementById("datepickerStart");
    var DPE = document.getElementById("datepickerEnd");
    if(reloadDataButton && DPS && DPE){
        reloadDataButton.onclick = function(){
            var startDP = new Date(DPS.value);
            var endDP = new Date(DPE.value);

            var startDate = (startDP.format("isoDateTime")).replace(/:/g, '\\:');
            var endDate = (endDP.format("isoDateTime")).replace(/:/g, '\\:');

            layer.redraw();
            }
        };
    }
};

(如有必要,與現有的window.onload處理程序合並)

如果那不能解決問題,並且按鈕確實不是形式,則問題必須出在layer.redraw(); (或window.onerror處理程序)。 嘗試注釋掉layer.redraw(); 看看會發生什么。

暫無
暫無

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

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