Search code examples
javascriptjqueryasp.netcontent-pages

How to call javascript function from asp.net button click event


How do I call the showDialog from a asp.net button click event. My page is a contentpage that has a masterpage associated with it.

I have tried the following

<asp:Button ID="ButtonAdd" runat="server" Text="Add" 
                            OnClientClick="showDialog('#addPerson');" />
  <asp:Button ID="ButtonAdd" runat="server" Text="Add" 
                            OnClientClick="showDialog(#<%=addPerson.ClientID %>);" />

I am also going to have to call this same function from a gridview template button to modify the record on the dialog.

<script type="text/javascript">


    // Used the following example to open the dialog withJquery 
        var dl;
        $(document).ready(function () {

            //Adding the event of opening the dialog from the asp.net add button.
            //setup edit person dialog             
            $('#addPerson').dialog({
                //Setting up the dialog properties.
                show: "blind",
                hide: "fold",
                resizable: false,
                modal: true,
                height: 400,
                width: 700,
                title: "Add New Member",
                open: function (type, data) {
                    $(this).parent().appendTo("form:first");
                }
            });

            //setup edit person dialog             
            $('#editPerson').dialog({
                //Setting up the dialog properties.
                show: "blind",
                hide: "fold",
                resizable: false,
                modal: true,
                height: 400,
                width: 700,
                title: "Modify Member",
                open: function (type, data) {
                    $(this).parent().appendTo("form");
                }             
            });



            function showDialog(id) {
                $('#' + id).dialog("open"); 
            } 



    //        function closeDialog(id) {
    //            $('#' + id).dialog("close"); 
    //        } 

            //Adding a event handler for the close button that will close the dialog 
            $("a[id*=ButtonCloseDlg]").click(function (e) {
                $("#divDlg").dialog("close");
                return false;
            });
        });

       </script>

Tried to call the jquery dialog from a gridview editbutton and get the same error Object doesnt support this property or method?

<input type="submit" name="ctl00$ContentPlaceHolder1$GridViewMembers$ctl02$Button1" value="Edit" onclick="showDialog(&#39;addPerson&#39;);" id="ContentPlaceHolder1_GridViewMembers_Button1_0" />

Solution

  • If you don't need to initiate a post back when you press this button, then making the overhead of a server control isn't necesary.

    <input id="addButton" type="button" value="Add" />
    
    <script type="text/javascript" language="javascript">
         $(document).ready(function()
         {
             $('#addButton').click(function() 
             { 
                 showDialog('#addPerson'); 
             });
         });
    </script>
    

    If you still need to be able to do a post back, you can conditionally stop the rest of the button actions with a little different code:

    <asp:Button ID="buttonAdd" runat="server" Text="Add" />
    
    <script type="text/javascript" language="javascript">
         $(document).ready(function()
         {
             $('#<%= buttonAdd.ClientID %>').click(function(e) 
             { 
                 showDialog('#addPerson');
    
                 if(/*Some Condition Is Not Met*/) 
                    return false;
             });
         });
    </script>