我使用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/

10-10 07:43