2013-11-01 4 views
3

Я пытаюсь запустить эту функцию javascript каждый раз, когда в моем проекте ASP.net используется cc-ретрансляция с использованием C#. Я читал онлайн, что, если вы создаете функцию pageLoad() в Javascript, она будет срабатывать каждый раз при обратной передаче. Я не могу заставить его стрелять. Вот весь код в моем файле Site.Master.javascript pageLoad function not firing in asp.net 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> 

Я был бы признателен за любую помощь. Thanks Mike

+0

Может быть, как это: http://stackoverflow.com/questions/9654808/do-something-javascript-before-asp-net-anypostback – bump

ответ

2

Вы уже используете 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!'); 
     } 


    }); 
+0

Я уже пробовал это в документе. Уже, но после исследования я прочитал статью, в которой говорится о том, что код в document.ready работает на обратной стороне, только при начальной загрузке страницы. http://encosia.com/document-ready-and-pageload-are-not-the-same/ – dmikester1

+0

Ваша страница делает полную обратную передачу или частичную обратную передачу через UpdatePanel? –

+0

Не уверен, что такое UpdatePanel, но я думаю о полной обратной передаче. – dmikester1

0

Для работы страницыLoad() необходимо иметь ScriptManager на странице. Однако нет необходимости добавлять его, если вы просто хотите запустить какой-то скрипт при каждой обратной передаче.

Вы можете сделать что-то вроде сдачи этого:

<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; 
+0

я сделал, что и в codebehind (который я предполагаю, это Site.Master.cs) Я получаю эту ошибку, когда добавляю эту строку: Ошибка Имя «phPageLoad» не существует в текущем контексте – dmikester1

+0

Тогда phPageLoad не создается автоматически на Site.Master. designer.cs по любой причине; проверьте, находится ли заполнитель в теге

, и если он не работает, явным образом объявляю его на вашем Site.Master.cs, как защищенный PlaceHolder phPageLoad; –