Javascript asp表单在服务器上运行,不允许内部html按钮onlick setinterval工作

Javascript asp表单在服务器上运行,不允许内部html按钮onlick setinterval工作,javascript,html,asp.net,Javascript,Html,Asp.net,我试图让服务器端按钮在客户端执行一些操作(id=“formSrvBtn”),但由于某些原因,setInterval功能无法按预期工作(要计算的表达式未计算),我还尝试使用客户端按钮而不是服务器按钮(id=“formCltBtn”)这也将是一个有效的选择,但有同样的不想要的结果。。。 使其工作的唯一方法是将按钮完全置于服务器端上下文之外(id=“cltBtn”),这在我们的实际场景中是无效的 以下是一个小型aspx的html,用于确认上述所有内容: <%@ Page Language="vb

我试图让服务器端按钮在客户端执行一些操作(
id=“formSrvBtn”
),但由于某些原因,setInterval功能无法按预期工作(要计算的表达式未计算),我还尝试使用客户端按钮而不是服务器按钮(
id=“formCltBtn”
)这也将是一个有效的选择,但有同样的不想要的结果。。。 使其工作的唯一方法是将按钮完全置于服务器端上下文之外(
id=“cltBtn”
),这在我们的实际场景中是无效的

以下是一个小型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>

函数dumb_setInterval(){
setInterval(函数(){alert('dumb setInterval after 5000ms!');},5000);
}


这里是下载解决方案的直接链接:

您需要确保不会调用
ImageButton
上的
OnClientClick
的默认行为,因为这将强制回发。您可以通过从
dumb\u setInterval()
方法返回false来执行此操作:

function dumb_setInterval() {
    setInterval(function(){alert('dumb setInterval after 5000ms!');}, 5000);    
    return false;
}
然后将返回语句添加到属性:

<asp:ImageButton id="formSrvBtn"
            runat="server" 
            OnClientClick="return dumb_setInterval();"

当然了,
@RGragam!返回OnClientClick!猜测不只是setInterval谁是哑巴…您的第二个解决方案效果很好:或者从dumb\u setInterval方法返回false://\u如果使用返回false,请不要忘记在客户端单击时更新ImageButton;方法:。谢谢这件事我自己做过很多次,我都数不清了!因此,如果您可以删除第一个建议,那就无关紧要了,因为cltBtn可以正常工作,但不是解决此问题的有效方法。这将使新来者更清楚地了解这一点。然后我会很高兴地把你的回答标记为:谢谢!