首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF:选项的SelectOneRadio快捷方式

JSF:选项的SelectOneRadio快捷方式
EN

Stack Overflow用户
提问于 2010-03-17 18:51:28
回答 3查看 2.3K关注 0票数 1

我有以下h:selectOneRadio

代码语言:javascript
复制
<h:selectOneRadio id="#{prefix}_rating" value="#{examinationPanel.tempResult}" >
<f:selectItems value="#{examinationPanel.options}"></f:selectItems>
</h:selectOneRadio>

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

代码语言:javascript
复制
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”将选择第二个选项,依此类推……

提前感谢!ps。我使用的是Jsf 1.2、Richfaces、Primefaces和Facelets。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-17 19:22:41

默认情况下,这不是内置的。你最好的选择就是使用JavaScript。将函数附加到<body>keypress事件,检查按下的键的keyCode,并相应地更改下拉菜单的selected项。使用jQuery,只需几行代码就可以做到这一点。这是一个SSCCE,只需复制、粘贴、运行即可。

代码语言:javascript
复制
<!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秒?)。

票数 3
EN

Stack Overflow用户

发布于 2010-03-17 19:49:47

您可以调查是否会有所帮助。简而言之,它允许您定义键盘快捷键,但它可能需要一些jQuery知识。

票数 2
EN

Stack Overflow用户

发布于 2010-03-23 18:48:01

PrimeFaces hotKey也可以提供帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2461588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档