我有以下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;
}如何为单选按钮组中的选项定义快捷方式?例如,键入"1“将选择第一个选项,键入"2”将选择第二个选项,依此类推……
提前感谢!ps。我使用的是Jsf 1.2、Richfaces、Primefaces和Facelets。
发布于 2010-03-17 19:22:41
默认情况下,这不是内置的。你最好的选择就是使用JavaScript。将函数附加到<body>的keypress事件,检查按下的键的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秒?)。
发布于 2010-03-17 19:49:47
您可以调查是否会有所帮助。简而言之,它允许您定义键盘快捷键,但它可能需要一些jQuery知识。
发布于 2010-03-23 18:48:01
PrimeFaces hotKey也可以提供帮助。
https://stackoverflow.com/questions/2461588
复制相似问题