Javascript 如何在加载时设置光标焦点?
我使用h:selectOneRadio标签。Javascript 如何在加载时设置光标焦点?,javascript,jquery,jsp,jsf,focus,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
我需要将光标焦点设置为第一个无线电字段
<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>
但是,有时,我可能会动态地更改,从备份bean中禁用无线电字段
<h:selectOneRadio id="testRadioId" value="">
<f:selectItem id="si1" itemLabel="JSF" itemDisabled="true"/>
<f:selectItem id="si2" itemLabel="JSP" />
</h:selectOneRadio>
那么
jQuery('#focusForm\\:testRadioId:enabled:first').focus();
那么
我不知道我在哪里出错。
更好的是,我需要使用id设置光标焦点。
提前感谢。既然您标记了jQuery,下面是一个jQuery解决方案:
$('[id^=focusForm:testRadioId]:enabled:first').focus();
[id^=name]
选择器将返回以namename
开头的所有元素
如果您的目的实际上是聚焦页面的第一个非隐藏和非禁用的输入元素,而不考虑输入类型,则使用以下方法:
$(':input:visible:enabled:first').focus();
我更喜欢使用javascript来实现这一点。将js函数调用放在HTML的body标记中。在js文件中定义javascript函数,或者至少在从body标记调用它之前。因此,如果要在HTML文件中定义函数,请尽早执行 HTML:
JavaScript:
<script type="text/javascript">
function formFocus()
{
focusForm.si1.focus();
}
</script>
函数formFocus()
{
focusForm.si1.focus();
}
感谢您的全力支持。现在我检查它的第一个代码。[id^=name]。它工作得非常好。$('[id^=focusForm:testradiod]:enabled:first').focus();它在FIreFox中工作。没有在IE6,IE8工作。我没有其他浏览器。我还是没有检查其他浏览器。是的,我检查过了。它在IE中起作用。但IE中有一个问题:页面加载后,我在单选字段中看不到光标焦点。但是,如果我按TAB按钮(页面加载后第一次),然后将光标焦点移动到下一个组件。例如,我有TEXTFIELD-1、radio-field、TEXTFIELD-2。我为onload期间的focus-the-radio字段编写了代码。在IE8中,加载后,我看不到光标聚焦到无线电场。但加载后,我按tab键,然后将光标焦点移动到TEXTFIELD-2。这个问题仅限于IE,而不是FireFox。问题是:“但是,有时,我可能会改变动态禁用支持bean的无线字段”。这个答案不包括这一点。
var id = "#focusForm:testRadioId:enabled:first".replace(/:/g, "\\:");
jQuery(id).focus();
$('[id^=focusForm:testRadioId]:enabled:first').focus();
$(':input:visible:enabled:first').focus();
<body onload=formFocus()>
<script type="text/javascript">
function formFocus()
{
focusForm.si1.focus();
}
</script>