JSF: SelectOneRadio сочетания клавиш для вариантов - PullRequest
1 голос
/ 17 марта 2010

У меня есть следующее h:selectOneRadio:

<h:selectOneRadio id="#{prefix}_rating" value="#{examinationPanel.tempResult}" >
<f:selectItems value="#{examinationPanel.options}"></f:selectItems>
</h:selectOneRadio>

И затем компонент поддержки загружает параметры, основанные на некоторых пользовательских настройках:

public List<SelectItem> loadOptions (Set<ResultEnum> possibleResults){
    List<SelectItem> options = new ArrayList<SelectItem>();
    for(ResultEnum result:possibleResults){
        SelectItem option = new SelectItem(result,messages.getString(result.name()));
        options.add(option);
    }
    return options;
}

Как определить ярлыки для параметров в группе радиостанций? Например, ввод «1» выбирает первый вариант, «2» - второй и т. д.

Заранее спасибо! пс. Я использую Jsf 1.2, Richfaces, Primefaces и Facelets.

Ответы [ 3 ]

3 голосов
/ 17 марта 2010

Это по умолчанию не встроено. Ваш лучший курорт использует JavaScript. Прикрепите функцию к событию keypress <body>, проверьте keyCode нажатой клавиши и измените элемент selected раскрывающегося списка соответственно. Это можно сделать всего за несколько строк, используя jQuery . Вот SSCCE , просто скопируйте и запустите его.

<!doctype html>
<html lang="en">
    <head>
        <title>SO question 2461588</title>
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script>
            $(document).ready(function() {
                $('body').keypress(function(e) {
                    var index = parseInt(String.fromCharCode(e.keyCode));
                    if (0 < index && index < 10) {
                        $('#dropdown option').eq(index - 1).attr('selected', true);
                    }
                });
            });
        </script>
    </head>
    <body>
        <select id="dropdown">
            <option>option1</option>
            <option>option2</option>
            <option>option3</option>
            <option>option4</option>
            <option>option5</option>
            <option>option6</option>
            <option>option7</option>
            <option>option8</option>
            <option>option9</option>
        </select>
    </body>
</html>

Если вы хотите поддерживать 10 или более элементов, вам нужно сохранить стек нажатых клавиш, немедленно применить его и ввести тайм-аут для сброса стека (1 секунда?).

2 голосов
/ 23 марта 2010

PrimeFaces hotKey также может помочь.

2 голосов
/ 17 марта 2010

Вы можете проверить, поможет ли <rich:hotKey>. Короче говоря, он позволяет вам определять сочетания клавиш, но может потребовать некоторых знаний jQuery.

...