asp表单在服务器上运行,不要让innerhtml按钮onclick setinterval工作

时间:2013-11-15 12:57:33

标签: javascript html asp.net

我正在尝试使用服务器端按钮在客户端(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

1 个答案:

答案 0 :(得分:1)

您需要确保未调用OnClientClickImageButton的默认行为,因为这会强制进行回发。您可以通过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();"