我使用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>
所以在这里我禁用第一个单选按钮。
现在,如果我使用相同的脚本,则不要将光标焦点设置到第一个单选字段。
如何处理呢?这意味着如何在加载期间动态更改我的脚本?
请帮我。
提前致谢。
更新:
谢谢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设置光标焦点。
提前致谢。
最佳答案
由于您标记了jQuery,因此这是一个jQuery解决方案:
$('[id^=focusForm:testRadioId]:enabled:first').focus();
[id^=name]
选择器将返回所有以名称name
开头的元素。如果您的意图实际上是聚焦页面的第一个非隐藏和非禁用输入元素,而不管输入类型如何,请使用以下命令:
$(':input:visible:enabled:first').focus();
关于javascript - 如何设置光标焦点加载?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3060644/