我正在尝试使用服务器端按钮在客户端(id="formSrvBtn"
)执行某些操作,但由于某种原因,setInterval功能无法按预期工作(不评估要评估的表达式),我也尝试使用客户端按钮而不是服务器按钮(id="formCltBtn"
),这也是一个有效的选项但具有相同的不需要的结果......
使其工作的唯一方法是将按钮完全置于服务器端上下文(id="cltBtn"
)之外,这不是我们现实生活场景中的有效选项。
Heres是一个小aspx的html,证实了上述所有内容:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script type = "text/javascript">
function dumb_setInterval() {
setInterval(function(){alert('dumb setInterval after 5000ms!');}, 5000);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<p><asp:ImageButton id="formSrvBtn"
runat="server"
OnClientClick="dumb_setInterval();"
AlternateText="This server img button's setInterval does not work!"
>
</asp:ImageButton></p>
<p><button id="formCltBtn"
onclick="dumb_setInterval();"
>
This client button's setInterval does not work!
</button></p>
</form>
<p><button id="cltBtn"
onclick="dumb_setInterval();"
>
This client button's setInterval works!
</button></p>
</body>
</html>
表单(id="form1"
)需要在我们的现实场景中运行服务器,所以我需要的是让按钮(id="formSrvBtn"
或id="formCltBtn"
)点击事件正确触发setInterval。 / p>
这是解决方案代表(对于visual studio 2005,抱歉......):https://github.com/RASMiranda/setIntervalRunAtServer
以下是下载解决方案的直接链接:https://github.com/RASMiranda/setIntervalRunAtServer/archive/master.zip
答案 0 :(得分:1)
您需要确保未调用OnClientClick
上ImageButton
的默认行为,因为这会强制进行回发。您可以通过dumb_setInterval()
方法返回false来执行此操作:
function dumb_setInterval() {
setInterval(function(){alert('dumb setInterval after 5000ms!');}, 5000);
return false;
}
然后在属性中添加一个return语句:
<asp:ImageButton id="formSrvBtn"
runat="server"
OnClientClick="return dumb_setInterval();"