2011-02-03 33 views
1

我已經看過這裏關於SOF的5個問題,並沒有真正找到有用的答案。我應該如何從我的.ascx控件的客戶端事件中調用我的JavaScript函數?這是我的.ascx文件..大多數的答案促使我:
.ascx中的javascript函數

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UIMenu.ascx.cs" Inherits="controls_UIMenu" %> 

<script language="javascript" type="text/javascript"> 
    function insetItem(myMenu) 
    { 
     myMenu.setAttribute("class", "myClass"); 
    } 
</script> 

<asp:Menu ID="Menu1" runat="server" Font-Bold="True" Font-Size="Large" Height="50px" 
    Orientation="Horizontal" Target="_self" StaticMenuItemStyle-HorizontalPadding="10px" 
    OnMenuItemClick="insetItem(this)" StaticMenuItemStyle-BorderStyle="outset"> 
    <Items> 
    <asp:MenuItem NavigateUrl="~/Home.aspx" Target="_self" Text="Home" Value="Home"></asp:MenuItem> 
    <asp:MenuItem NavigateUrl="~/Loaner.aspx" Target="_self" Text="New" Value="New"></asp:MenuItem> 
    </Items> 
</asp:Menu> 

這樣做時,這樣我得到不同的錯誤。 「..... ascx不包含」insetItem「的定義,我的其他頁面使用此文件不再識別它。當我嘗試將js放在將要使用它的實際.aspx頁面上時,我得到相同的無定義錯誤。

我剛開始學習jscript,還是很漂亮的菜鳥。我試圖讓用戶點擊菜單項時,我希望該項目的邊框更改爲「插入」。我不確定如何更改特定項目的屬性,該項目在javascript> _ <中被點擊,但這是另一個問題。如果有人能夠以這種方式正確引導我,那會很棒。謝謝!

回答

1

MenuItemClick是實際上可以一個MenuEventHandler C#事件處理程序。我相信你會尋找某種OnClientClick,或簡單地使用onclick屬性。

此外,我不知道您是否使用任何庫,但jQuery,Prototype或其他可以非常容易地綁定此事件監聽器悄悄地加載文檔時。

+0

我明白了。這總是把我搞砸了。有沒有辦法來分辨客戶端和服務器事件之間的區別?我是新的jscript,從來沒有碰過jQuery或任何東西,但似乎我會很快 – 2011-02-03 23:44:25

2

錯誤來自「OnMenuItemClick」,它是服務器端的事件處理程序。它沒有在服務器端找到'insetItem',所以拋出錯誤。

如果你想有被點擊菜單項時,你也許能夠把onclick="insetitem(this);return false;"MenuItem標籤

<asp:MenuItem onclick="insetitem(this);returnfalse;" NavigateUrl="~/Loaner.aspx" Target="_self" Text="New" Value="New"></asp:MenuItem> 

return false;將阻止該網頁時,菜單做回發一個動作發生項目被點擊。

我沒有設置任何東西來測試這一切,它都在頭頂,所以你可能需要稍微調整它才能使它工作。 :)

+0

我明白了,謝謝^^ – 2011-02-03 23:43:01