2015-02-07 5 views
0

Я использую Primefaces 5.0.
Элемент p: selectOneButton полностью пропускается, когда я просматриваю страницу. Ниже приведен фрагмент кода.
Может кто-нибудь дать взломать, чтобы заставить tabindex работать с p: selectOneButton?p: selectOneButton tabindex не работает в сетках 5.0

<p:selectOneButton tabindex="50" id="orderAction" value="#{orderController.side}" onchange="toggleBuySell();"> 
    <f:selectItems value="#{orderDataContainer.actionTypes}"/> 
    <p:ajax event="change" update=" messages" process="@this " listener="#{orderController.validateAction}" oncomplete="someAction();"/> 
</p:selectOneButton> 
+0

tabindex является _not_ атрибутом для p: selectOneButton. Вы можете попробовать использовать атрибут pass through: '' – Zim

+0

@zim: это может сработать, но вы получаете доступ к ** каждой кнопке ** в выборе? – Kukeltje

+0

@Kukeltje: Я так не думаю ... Чтобы получить доступ к каждой кнопке, может потребоваться сделать что-то вроде: ' ' (это не проверено!) – Zim

ответ

0

То, что я предложил в своем комментарии, не работает, атрибут passtrough не добавляется к входным элементам. Однако, вы можете управлять, чтобы сделать это с помощью некоторых JQuery:

установить widgetVar вашему selectOneButton
перебирать его входы в:
удалить их скрытое свойство (в противном случае они не будут tabbable)
переместить их из экрана
связывают фокус и размытия событий, чтобы выделить соответствующую кнопку (которые дивы)

<p:selectOneButton widgetVar="orderActionWidget" id="orderAction" value="#{orderController.side}" onchange="toggleBuySell();"> 
    <f:selectItems value="#{orderDataContainer.actionTypes}"/> 
    <p:ajax event="change" update=" messages" process="@this " listener="#{orderController.validateAction}" oncomplete="someAction();"/> 
</p:selectOneButton> 

PF('orderActionWidget').buttons.find('input').each(function(index, value) { 
    $(value) 
    .attr('tabindex', 50 + index) 
    .removeClass('ui-helper-hidden') 
    .css('position', 'absolute') 
    .css('left', '-1000px') 
    .bind({ 
    focus : function() { 
     $(this).parent().addClass('ui-state-hover'); 
    }, 
    blur : function() { 
     $(this).parent().removeClass('ui-state-hover'); 
    } 
    }); 
}); 
+0

это выбирает первая кнопка, но при управлении выводом не переходит к следующей кнопке (выберите элемент), но переходит к другому элементу. – Nav

+0

Протестировано прямо сейчас на витрине Primefaces, и она работает должным образом. Вы можете проверить свои значения tabindex ... Если у вас есть несколько selectOneButton, чтобы применить это, используйте глобальный счетчик вместо '.attr ('tabindex', 50 + index)' – Zim

+0

Это работает, но только частично. Поскольку это только сфокусировано на первой кнопке, при выводе после первой кнопки другие кнопки пропускаются (хотя я могу видеть tabindex, заданный вашим запросом.) На вкладке Shift фокус доходит до последней кнопки. Дальнейшая смена вкладок пропускает другие кнопки. Не знаю, как это решить – Nav