将tabindex属性应用于asp:Menu控件以获取焦点

时间:2019-04-02 07:08:34

标签: javascript jquery asp.net tabindex runatserver

我有一个asp菜单控件作为菜单项,我试图添加一个新的属性tabindex =“ 0”以通过键盘导航集中于菜单项。

   <Site:DynamicMenu ID="DynamicID" runat="server"/> //this is from Master page

   <asp:Menu ID="IDHere" runat="server" Orientation="Horizontal"></asp:Menu> // this is from Menu rendering page

我向它添加了一个新类,并向控件添加了Tabindex属性(每次都获得焦点),因此绑定了一个可由ADA用户使用的键盘事件。我能够通过jQuery添加role =“ button”,它保留在浏览器中的控件上。但是Tabindex属性永远不会保留。在进一步调试中,我注意到该控件具有一个tabindex属性,该属性是从服务器端代码生成的“ -1”,它代替了我已附加到上述asp控件的新的tabindex =“ 0”。服务器端脚本不在我的控制范围内(至少这是我的想法?)。还有其他选项可以使我的菜单的tabindex =“ 0”覆盖掉,以便获得焦点吗?

以下是我添加到控件中的内容:

   <asp:Menu ID="IDHere" runat="server" Orientation="Horizontal" cssClass="keyboardFn" Tabindex="0"></asp:Menu>

脚本(该脚本将attr附加到生成的标记:

   $("#IDHere").attr("role", "button"); //appending the attribute
   $('.keyboardFn').keydown( function (e) {
    //doing the thing here
   }

在浏览器中呈现的标签如下:

   <a class="menu1" href="#" onclick="__doPostBack('ctl00$DynamicID$IDHere','1')" tabindex="-1" role="button">Menu Name1</a>

如果您注意到,role =“ button”保持不变,但是由于以下来自webresources服务器生成的代码的脚本,tabindex不断替换:

    .....
    menuItem.hover(false);
    menuItem.blur();
    ......
    .......
     blur: function() { this.setTabIndex(-1); } // this is what I think is replacing the tabindex that I'm trying to set.

是否有一种方法可以覆盖此属性,以便在有条件的情况下为我的页面维护新值?我浏览了很多,但失败了。

我发现了以下帖子,但在我的情况下不起作用。任何帮助表示赞赏!

Setting ASP.NET Button attributes client side and read attribute value server side

0 个答案:

没有答案