Javascript 在客户端单击“不工作”时防止链接按钮回发。为什么?

Javascript 在客户端单击“不工作”时防止链接按钮回发。为什么?,javascript,asp.net,Javascript,Asp.net,我知道围绕这个话题有很多答案,但我就是无法让它发挥作用 我需要防止链接按钮发回和以下代码不工作。代码肯定会在所有需要的地方被命中 链接按钮定义: <asp:LinkButton ID="NavHelp" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton> 但是,在showConfirm返回false后,链

我知道围绕这个话题有很多答案,但我就是无法让它发挥作用

我需要防止链接按钮发回和以下代码不工作。代码肯定会在所有需要的地方被命中

链接按钮定义:

  <asp:LinkButton ID="NavHelp" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton>
但是,在
showConfirm
返回false后,链接按钮仍会发回服务器端
NavHelp
方法

作为补充说明,我还在.NET生成的
\uuu doPostback
方法中放置了一个断点,在
showConfirm
返回false后,它确实会被命中


有人能解释一下吗?

是的,我知道了。我需要在OnClientClick属性中包含return语句:

OnClientClick="return showConfirm(event);"
不是


顺便说一句,您可以使用原始代码,但不是使用
event.stopPropagation()
您可以使用
event.preventDefault()

所以你的代码是

<asp:LinkButton ID="NavHelp" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton>

function showConfirm(event) {
  event.preventDefault();
  return false;
}

基本上,preventDefault阻止elemnt执行其dfault操作,即查看链接或提交表单,而StopRopagation允许dfault操作发生,但不通知任何父元素它已经发生


我创建了一个小JSFIDLE:它向您显示了防止默认值,这应该允许您在成功点击链接之前放入自己的javascript逻辑、显示modals等。

onClientClick javascript事件中添加Return语句

OnClientClick="return showConfirm(event);"
因此,当showConfirm return false时,请求将不会传输到服务器,页面也不会回发。

这样做:

<asp:LinkButton ID="NavHelp" ClientIDMode="Static" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton>
<script>
    $("#NavHelp").click(function(event) {
        if (showConfirm()) {
            event.stopPropagation();
            event.preventDefault();
            return false;
        }
        return true;
    });
</script>

$(“#导航帮助”)。单击(函数(事件){
如果(showConfirm()){
event.stopPropagation();
event.preventDefault();
返回false;
}
返回true;
});

这对我来说肯定不行。同样,返回false似乎也不起作用。
OnClientClick="return showConfirm(event);"
<asp:LinkButton ID="NavHelp" ClientIDMode="Static" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton>
<script>
    $("#NavHelp").click(function(event) {
        if (showConfirm()) {
            event.stopPropagation();
            event.preventDefault();
            return false;
        }
        return true;
    });
</script>