4

每次使用 c# 在我的 ASP.net 项目中进行回发时,我都试图让这个 javascript 函数触发。我在网上读到,如果您在 Javascript 中创建 pageLoad() 函数,它会在每次回发时触发。我不能让它着火。这是我的 Site.Master 文件中的所有代码。

    <%@ 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>

我将不胜感激任何帮助。谢谢迈克

4

2 回答 2

3

您已经在使用 jQuery $(document).ready,只需在其中添加您的代码即可。它会在每次页面重新加载时运行:

    $(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!');
        }


    });
于 2013-11-01T14:17:09.587 回答
1

您必须在页面上有 ScriptManager 才能使 pageLoad() 工作。但是,如果您只想在每次回发时运行一些脚本,则无需添加它。

你可以这样做:

<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>

进入您的母版页并在母版页的代码隐藏中将其添加到 Page_Load:

phPageLoad.Visible = Page.IsPostback;
于 2013-11-01T14:12:20.867 回答