代码之家  ›  专栏  ›  技术社区  ›  pakore

jsf:selectoneradio选项快捷方式

  •  1
  • pakore  · 技术社区  · 16 年前

    我有以下内容 h:selectOneRadio :

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

    然后,支持bean将根据一些用户首选项加载选项:

    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;
    }
    

    如何定义收音机组中选项的快捷方式?Por示例键入“1”选择第一个选项,键入“2”选择第二个选项,等等…

    事先谢谢! 我正在使用JSF1.2,richfaces,primefaces和facelets。

    3 回复  |  直到 16 年前
        1
  •  3
  •   BalusC    16 年前

    这不是默认内置的。最好的方法是使用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
  •  2
  •   Bozho    16 年前

    你可以调查一下 <rich:hotKey> 会有帮助的。简而言之,它允许您定义键盘快捷方式,但它可能需要一些jquery知识。

        3
  •  2
  •   Cagatay Civici    16 年前

    PrimeFaces热键也能提供帮助。

    推荐文章