2012-03-06 79 views
0

我有一个ASP页面,它有一个JS函数在HTML输入按钮上单击调用,但每次点击按钮时,页面都会重新加载并返回初始状态。在一个按钮上调用一个JS函数点击刷新页面

我都在服务器和客户端禁用缓存,使用这些标签

<% 
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

需要单击按钮时应执行的按钮代码和代码。 – Eli 2012-03-06 01:42:51

+1

这与缓存无关。 – 2012-03-06 01:46:28

+0

尝试'onclick =“reloadData();返回false;' – Stefan 2012-03-06 06:52:30

回答

1

该按钮可能会导致回发。它是否以一种形式存在?

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

+0

该按钮不是在窗体中,一切都在客户端处理,实际上我没有处理数据库。 – TheZelus 2012-03-06 03:19:21

0

重复使用reloadData<... id ="reloadData" onclick="reloadData()" ...>可能会在某些浏览器中出现问题,但您不会期望它。

在任何情况下,尽量安装在javascript onclick句柄而不是HTML,如下所示:

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

相关问题