2012-03-31 24 views
2

我有一個asp:UpdatePanelasp:Buttonasp:TextBoxASP:UpdatePanel的 - 添加JavaScript的按鈕上點擊

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:Button runat="server" Text="Click" ID="button" onclick="button_Click"/> 
     <asp:TextBox runat="server" Title="Text" ID="text" Style="margin-top: 50px;" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

而且button_Click方法是:

protected void button_Click(object sender, EventArgs e) { 
    text.Attributes.Add("title", "Box"); 
    ClientScript.RegisterClientScriptBlock(typeof(ScriptManager), "Tooltify", "tooltipfy();", true); 
} 

tooltify()是一個JavaScript函數。

var tooltipfy = function() { 
    alert(''); 
    $('[title]').qtip({ 
     style: { 
      tip: { 
       corner: true, 
       width: 10, 
       height: 5 
      }, 
      classes: 'ui-tooltip-rounded ui-tooltip-shadow ui-tooltip-tipsy' 
     }, 
     position: { 
      my: 'bottom left', 
      at: 'top right', 
      adjust: { 
       x: -10, 
       y: 0 
      } 
     }, 
     events: { 
      show: function (event, api) { 
       $('.ui-tooltip-content').addClass('ui-tooltip-center'); 
      } 
     }, 
     show: { 
      effect: function (offset) { 
       $(this).show("slide", { direction: "up" }, 500); 
      } 
     }, 
     hide: { 
      effect: function (offset) { 
       $(this).hide("explode", 500); 
      } 
     } 
    }); 
} 

問題是函數沒有執行。

如何在使用asp:UpdatePanel時調用JavaScript函數?

回答

4

使用UpdatePanel時,您應該使用ScriptManger

protected void button_Click(object sender, EventArgs e) { 

    ScriptManager.RegisterClientScriptBlock(this, this.GetType(),"Tooltify", "tooltipfy();", true); 
} 
2

我現在不在這裏進行測試的可能性,但根據this blog你應該得到它與ScriptManager.RegisterStartupScript工作。

+0

我都試過,但它無法正常工作。 – 2012-03-31 18:40:13

+0

使用ScriptManager,而不是ClientScript – 2012-03-31 18:42:36

+0

謝謝。使用'ScriptManager.RegisterClientScriptBlock'它正在工作。 – 2012-03-31 18:46:34

0

使用ClientScript.RegisterClientScriptBlock是不好的做法。 如果您的JavaScript函數(tooltipfy)應該更新一些控件,你應該把這些控制在你的asp:UpdatePanel,並在你的代碼更新他們的背後是這樣的:

someDiv.Style.Add("display", "inline"); 
someDiv.InnerHtml = Text; 
otherControl.Style.Add("display", "block");