我有一个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();
}
我不认为这必须对调用的函数执行某些操作,因为它只是重新调整过滤器中的值。
答案 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();
,看看会发生什么。