2010-09-14 2 views
1

Я пытаюсь внедрить всплывающую подсказку JQuery в Flowplayer.org http://flowplayer.org/tools/demos/tooltip/form.html в мое веб-приложение (C# .NET).AJAX vs JQuery Tooltip - UpdatePanel

У меня есть следующий сценарий в Master.Page:

  function createTooltip() { 



      // select all desired input fields and attach tooltips to them 
      $("#aspnetForm :input").tooltip({ 
       // place tooltip on the right edge 
       position: ['center', 'right'], 
       // a little tweaking of the position 
       offset: [-2, 10], 

       // use a simple show/hide effect 
       effect: 'fade', 

       // custom opacity setting 
       opacity: 0.7 
      });   
} 

     //--add tooltips after every postback (including partial AJAX postbacks) 

     function pageLoad(sender, args) { 
      if (args.get_isPartialLoad()) { 
       createTooltip(); 
      } 
     } 

Это будет контролировать этот вход и несколько других более:

<asp:TextBox ID="txtEscola" runat="server" Text="" class="tooltipHandle" title="Observações adicionais que sejam prudentes introduzir" MaxLength="100" </asp:TextBox> 

У меня есть GridView и DetailsView под UpdatePanel, после того, как first partialPostBack, подсказка будет работать только с входами внутри этой UpdatePanel, а после следующих partialPostBacks никто не будет работать вообще.

Если я изменяю от:

 function pageLoad(sender, args) { 
      if (args.get_isPartialLoad()) { 
       createTooltip(); 
      } 
     } 

к:

 function pageLoad(sender, args) { 
      createTooltip(); 
    } 

только вход-х вне UpdatePanel будет работать

Если я получить доступ непосредственно вход по его идентификатор и класс, его будет работать должным образом, но это будет означать набирать их все:

$("#ctl00_ContentPlaceHolder1_DetailsView1_txtEscola.tooltipHandle").tooltip({ 

Любые мысли о том, как заставить всех из них правильно связываться? Заранее спасибо

+0

Вы не можете сравнить подсказки для инструмента AJAX, re для разделения объектов и в любом случае не связаны. – RobertPitt

+0

Что вы имеете в виду? Я отношу этот пост к AJAX из-за partialPostBacks с UpdatePanels –

ответ

0

Похоже, что ваш JavaScript больше не связан при обновлении панели обновления.

Когда ваша панель обновления отправляется обратно, вам необходимо выполнить один из следующих фрагментов кода, чтобы повторно связать JavaScript.

ClientScriptManager cs = Page.ClientScript; 
cs.RegisterStartupScript(typeof(Page), "ReApplyJavascript", "<script type=text/JavaScript>createTooltip();</script>", false); 

ИЛИ

ScriptManager.RegisterStartupScript(Page, typeof(Page), "ReApplyJavascript", "<script type=text/JavaScript>createTooltip();</script>", false); 
+0

благодарю вас за ваш ответ, но это не сработало = ( –

+0

@ Rui Santos - Если все работает хорошо, жестко кодируя идентификаторы, то, возможно, ваш селектор ({... –

+0

Пробовал это тоже, только поля ввода за пределами панели обновлений работали .. У меня заканчиваются идеи –

2

Удалось решить с помощью простой обходной путь, создал вторую функцию для создания всплывающей подсказки, чтобы воздействовать только на поле ввода внутри DetailsView/UpdatePanel:

 function createTooltipOutside() { 
     $('.tooltipHandleOutside').tooltip({ 
      position: ['center', 'right'], 
      offset: [-2, 10], 
      effect: 'fade', 
      opacity: 0.7 
     }); 
    } 
    function createTooltipInside() { 
     //--call this to add tooltips to any element with a class of "tooltipHandleInside" 
     $('.tooltipHandleInside').tooltip({ 
      position: ['center', 'right'], 
      offset: [-2, 10], 
      effect: 'fade', 
      opacity: 0.7 
     }); 

    } 

    //--add tooltips after every postback (including partial AJAX postbacks) 

    function pageLoad(sender, args) { 
     if (args.get_isPartialLoad()) { 
      createTooltipInside(); 
     } 
     createTooltipOutside(); 
    } 

Я до сих пор не понимаю, почему это не сработало до ...