简体   繁体   中英

javascript pageLoad function not firing in asp.net Site.Master

I am trying to get this javascript function to fire every time there is a postback in my ASP.net project using c#. I read online that if you create a pageLoad() function in Javascript, it will fire every time on a postback. I can't get it to fire. Here is all the code in my Site.Master file.

    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Weights.SiteMaster" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head runat="server">
        <title></title>
        <script type="text/javascript" src="<%=ResolveUrl("~/Scripts/jquery-1.4.1.min.js")%>"></script>
        <script type="text/javascript">
            function pageLoad() {
                if ($('#MainContent_ckbIncludeWeight').checked) {
                    $('#MainContent_txtPalletWeight').show();
                    console.log('it is checked!');
                    alert('it is checked!');
                }
                if (true) {
                    console.log('fire!');
                    alert('fire!');
                }
            }
        </script>
        <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
        <asp:ContentPlaceHolder ID="HeadContent" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form runat="server">
        <div class="page">
            <div class="header">
                <div class="title">
                    <h1>
                        My ASP.NET Application
                    </h1>
                </div>
                <div class="loginDisplay">
                    <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                        <AnonymousTemplate>
                            [ <a href="~/Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
                        </AnonymousTemplate>
                        <LoggedInTemplate>
                            Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
                            [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/"/> ]
                        </LoggedInTemplate>
                    </asp:LoginView>
                </div>
                <div class="clear hideSkiplink">
                    <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                        <Items>
                            <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
                            <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
                        </Items>
                    </asp:Menu>
                </div>
            </div>
            <div class="main">
                <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
            </div>
            <div class="clear">
            </div>
        </div>
        <div class="footer">

        </div>
        </form>
    </body>
    <script type="text/javascript">
        function pageLoad() {
            if ($('#MainContent_ckbIncludeWeight').checked) {
                $('#MainContent_txtPalletWeight').show();
                console.log('it is checked!');
                alert('it is checked!');
            }
            if (true) {
                console.log('fire!');
                alert('fire!');
            }
        }
        $(document).ready(function () {

            $('#MainContent_ckbIncludeWeight').click(function () {
                if (this.checked) {
                    $('#MainContent_txtPalletWeight').show();
                    $('#MainContent_txtPalletWeight').val('40');
                    $('#MainContent_txtPalletWeight').after("<span id='pound'>#</span>");
                }
                else {
                    $('#MainContent_txtPalletWeight').hide();
                    $('#MainContent_txtPalletWeight').val('');
                    $('#pound').remove();
                }
            });
        });
    </script>
</html>

I would appreciate any help. Thanks Mike

You're already using jQuery's $(document).ready , just add your code there as well. It will run every time page reloads:

    $(document).ready(function () {

        $('#MainContent_ckbIncludeWeight').click(function () {
            if (this.checked) {
                $('#MainContent_txtPalletWeight').show();
                $('#MainContent_txtPalletWeight').val('40');
                $('#MainContent_txtPalletWeight').after("<span id='pound'>#</span>");
            }
            else {
                $('#MainContent_txtPalletWeight').hide();
                $('#MainContent_txtPalletWeight').val('');
                $('#pound').remove();
            }
        });


        // Originally from function pageLoad()
        if ($('#MainContent_ckbIncludeWeight').checked) {
            $('#MainContent_txtPalletWeight').show();
            console.log('it is checked!');
            alert('it is checked!');
        }
        if (true) {
            console.log('fire!');
            alert('fire!');
        }


    });

You have to have ScriptManager on page in order for pageLoad() to work. There is however no need for adding it, if you just want to run some script on every postback.

You can do something like putting this:

<asp:PlaceHolder ID="phPageLoad" runat="server">
  <script type="text/javascript">
        if ($('#MainContent_ckbIncludeWeight').checked) {
            $('#MainContent_txtPalletWeight').show();
            console.log('it is checked!');
            alert('it is checked!');
        }
        if (true) {
            console.log('fire!');
            alert('fire!');
        }
  </script>
</asp:PlaceHolder>

into your master page and in codebehind of master page add this to Page_Load:

phPageLoad.Visible = Page.IsPostback;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM