我使用h:selectOneRadio标签 我需要将光标焦点设置为第一个无线电场。
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h:form id="focusForm" >
<h:selectOneRadio id="testRadioId" value="">
<f:selectItem id="si1" itemLabel="JSF" />
<f:selectItem id="si2" itemLabel="JSP" />
</h:selectOneRadio>
</h:form>
</body></html></f:view>
这里Firefox(浏览器)分配id: focusForm:testRadioId:0 该字段。
所以我使用以下脚本:
document.getElementById("focusForm:testRadioId:0").focus();
但是,
有时,我可能会动态地更改来自辅助bean的无线电字段。
<h:selectOneRadio id="testRadioId" value="">
<f:selectItem id="si1" itemLabel="JSF" itemDisabled="true"/>
<f:selectItem id="si2" itemLabel="JSP" />
</h:selectOneRadio>
所以这里我禁用了第一个单选按钮 现在,如果我使用相同的脚本,则不将光标焦点设置为第一个无线电场 怎么处理这个?这意味着如何在onload期间动态地改变我的脚本?
请帮帮我 提前谢谢。
更新:
感谢BaluC。
以下代码已经完成。
<a4j:loadScript src="resource://jquery.js"/>
<script type="text/javascript">
function setFocusRadioField()
{
jQuery(':input:visible:enabled:first').focus();
}
</script>
<body onload="setFocusRadioField();">
</body>
但 以下代码无效。 我测试以下方式:
jQuery('#focusForm\:testRadioId:enabled:first').focus();
然后,
jQuery('#focusForm\\:testRadioId:enabled:first').focus();
然后,
var id = "#focusForm:testRadioId:enabled:first".replace(/:/g, "\\:");
jQuery(id).focus();
我不知道我在哪里犯错误。 更好,我需要使用id设置光标焦点。 提前谢谢。
答案 0 :(得分:1)
由于你标记了jQuery,这里是一个jQuery解决方案:
$('[id^=focusForm:testRadioId]:enabled:first').focus();
[id^=name]
选择器将返回以名称name
开头的所有元素。
如果您的意图实际上是关注页面的第一个非隐藏和非禁用输入元素,无论输入类型如何,请使用:
$(':input:visible:enabled:first').focus();
答案 1 :(得分:0)
我更喜欢使用javascript。将js函数调用放在HTML的body标记中。在js文件中定义javascript函数,或者至少在从body标签调用它之前。因此,如果您要在HTML文件中定义该函数,请尽早完成。
HTML:
<body onload=formFocus()>
JavaScript的:
<script type="text/javascript">
function formFocus()
{
focusForm.si1.focus();
}
</script>