NavigateUrl没有在MenuItem中调用javascript

时间:2011-10-11 00:02:46

标签: javascript asp.net menu menuitem

我似乎无法理解为什么菜单项没有在我的asp.net菜单中调用javascript功能。当我单击菜单项时,菜单关闭,不再做任何事情。我的部分代码如下所示:

  

  <asp:Panel runat="server" ID="MenuPanel" CssClass="MenuPanel" style="display: none">
    <asp:Menu ID="MyMenu" runat="server" CssClass="Menu" ForeColor="Black"
      BorderStyle="Double" BorderColor="Gray" BorderWidth="1px">
      <StaticMenuItemStyle BackColor="#DBDDE0" CssClass="MenuItem" />
      <StaticHoverStyle BackColor="#CCCDCE" />
      <Items>
        <asp:MenuItem Text='Item 1' Value="0" Selectable="true" NavigateUrl="javascript:alert('hello world 1')" ImageUrl="~/image1.gif"/>
        <asp:MenuItem Text='Item 2' Value="1" Selectable="true" NavigateUrl="javascript:alert('hello world 2')" ImageUrl="~/image2.gif" />
      </Items>
    </asp:Menu>
  </asp:Panel>

更新1

当我进一步测试显示当我注释掉被点击的元素的onBlur事件(显示菜单的元素)时,我正要转储浏览器输出,javascript按预期工作。

当焦点远离元素时,onBlur事件中的代码会隐藏弹出菜单。第二次单击菜单项本身会触发onBlur事件,该事件会隐藏菜单。似乎由于菜单被隐藏,与之关联的javascript不会被调用。

2 个答案:

答案 0 :(得分:1)

浏览器中的输出结果如何?

使用viewsource或firebug或IE调试器来查看。

使用onclick可以更好地处理这个问题:

onclick='alert("test");return false;'

答案 1 :(得分:0)

我认为你应该尝试JQuery

<script language="javascript" type="text/javascript">
   $(function () {
        $(".Menu a").each(function (index) {
             $(this).click(function () {
                 alert(index);
                 return false;
             });
        });
   });
</script>