6

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

我需要防止链接按钮发回,并且以下代码不起作用。代码肯定会在所有需要的地方命中。

链接按钮定义:

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

Javascript函数(肯定被击中)

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

但是,在showConfirm返回 false 后,链接按钮仍会返回到服务器端NavHelp方法。

附带说明一下,我还在 .NET 生成的方法中放置了一个断点,并且在返回 false__doPostback后它确实会被命中。showConfirm

任何人都可以对此有所了解吗?

4

4 回答 4

7

对,想通了。我需要在 OnClientClick 属性中包含 return 语句:

OnClientClick="return showConfirm(event);"

不是

OnClientClick="showConfirm(event);"
于 2013-05-23T10:04:06.567 回答
1

这有效:

<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>
于 2014-02-06T09:44:16.347 回答
1

顺便说一句,您可以使用您的原始代码,而不是使用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;
}

在此处阅读有关 event.preventDefault() 与 event.stopPropagation() 的更多信息:http: //davidwalsh.name/javascript-events

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

我创建了一个小 jsfiddle: http: //jsfiddle.net/XgSXr/,它向您显示了阻止默认值,这应该允许您在成功推动链接点击之前放入自己的 javascript 逻辑、显示模式等。

于 2013-05-23T13:30:46.117 回答
0

在中添加 Return 语句onClientClick Javascript Event

OnClientClick="return showConfirm(event);"

因此,当 showConfirm 返回 false 时,请求不会传输到服务器,页面不会回发。

于 2013-05-23T13:37:21.490 回答