我有一个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