在按钮上调用JS函数会刷新页面

时间:2012-03-06 01:40:36

标签: javascript asp.net

我有一个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();
            }

我不认为这必须对调用的函数执行某些操作,因为它只是重新调整过滤器中的值。

2 个答案:

答案 0 :(得分:1)

按钮可能会导致回发。它是否以表格形式存在?

让javascript函数返回false以防止回发。

答案 1 :(得分:0)

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();,看看会发生什么。