Prevent LinkButton post back OnClientClick not working. Why?

前端 未结 4 1651
天涯浪人
天涯浪人 2020-12-02 00:37

I know there are plenty of answers surrounding this topic but I just cannot get this to work.

I need to prevent a link button posting back and the following code is

相关标签:
4条回答
  • 2020-12-02 01:26

    Right, figured it out. I needed to include the return statement in the OnClientClick attribute:

    OnClientClick="return showConfirm(event);"
    

    NOT

    OnClientClick="showConfirm(event);"
    
    0 讨论(0)
  • 2020-12-02 01:28

    Add Return statement in onClientClick Javascript Event

    OnClientClick="return showConfirm(event);"
    

    So when showConfirm return false then request will not be transer to server and page not postback.

    0 讨论(0)
  • 2020-12-02 01:30

    incidentally, you can use your original code, but rather than using event.stopPropagation() you can use event.preventDefault()

    so your code would be

    <asp:LinkButton ID="NavHelp" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton>
    
    function showConfirm(event) {
      event.preventDefault();
      return false;
    }
    

    read some more on event.preventDefault() vs event.stopPropagation() here : http://davidwalsh.name/javascript-events

    basically the preventDefault prevents the elemnt from carrying out its dfault action, i.e. visting a link or submitting a form, while stoppropagation allows the dfault action to occur, BUT doesn't inform any parent elements that it has happened.

    i created a little jsfiddle : http://jsfiddle.net/XgSXr/ that shows you the prevent default, this should allow you to put in your own javascript logic, display modals etc, before successfully pushing through the link click.

    0 讨论(0)
  • 2020-12-02 01:31

    This works:

    <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>
    
    0 讨论(0)
提交回复
热议问题