如何设置光标焦点onload?

时间:2010-06-17 10:04:10

标签: javascript jquery jsp jsf focus

我使用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设置光标焦点。 提前谢谢。

2 个答案:

答案 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>