Примените атрибут tabindex к asp: элемент управления меню, чтобы получить фокус - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть элемент меню 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. Я смог добавить role = "button" через jQuery, который остался на контроле в браузере. Но свойство Tabindex никогда не остается на месте. При дальнейшей отладке я заметил, что у этого элемента управления есть свойство tabindex как «-1», сгенерированное из кода на стороне сервера, который заменяет новый tabindex = «0», который я добавил к вышеуказанному элементу управления asp. Скрипт серверной части не в моём контроле (по крайней мере, я так думаю?). Есть ли другие варианты, которые я могу сделать перезаписать tabindex = "0" для моего меню, чтобы оно получило фокус?

Вот что я добавил в элемент управления:

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

Скрипт (который добавляет атрибут к сгенерированному тегу:

   $("#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" остается на месте, но 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.

Есть ли способ перезаписать это свойство, чтобы сохранить новое значение на основе условий для моей страницы? Я просмотрел потрясающе и не смог.

Я нашел следующий пост, но в моем случае он не работает. Любая помощь приветствуется!

Установка атрибутов кнопки ASP.NET на стороне клиента и чтение значения атрибута на стороне сервера

...