使用JavaScript / RichFaces将焦点设置为表单元素

时间:2015-08-13 04:20:03

标签: javascript jsf richfaces jsf-1.2 ajax4jsf

我正在使用JSF 1.2和RichFaces。我有一个要求,点击命令按钮(<h:commandButton>)RichFaces数据表将显示3组行,这工作正常,但问题是我需要在数据表的文本框中设置焦点这是行不通的。请找到我正在使用的示例代码。

命令按钮:

<a4j:commandButton immediate="true"
                   action="#{bean.addTomethod}"
                   reRender="myform" 
                   oncomplete= "setFocusOnRichComponenet();" 
                   rendered="true">
</a4j:commandButton>

JavaScript代码:

function setFocusOnRichComponenet(){
    document.getElementById("myform:richDataTableList:0:richTextBoxID").focus();
}

此处,myform:richDataTableList:0:richTextBoxID是我想要关注的组件的id

2 个答案:

答案 0 :(得分:0)

当动态生成id时,有时尝试使用document.getElementById引用可能是错误的,因为您必须知道完整的id。

更简单的方法是使用RichFaces方法clientId('elementName') 这基本上将解析确切的id,因此您不必通过tableName []引用.Element [] format。

因此,对于您的场景,您可以替换javascript函数,如下所示:

function setFocusOnRichComponenet(){
    document.getElementById("#{rich:clientId('myTextBox')}").focus();
}

其中'myTextBox'是您尝试引用的文本框的名称

答案 1 :(得分:0)

在输入中添加一个类:

TypeError: class constructors must be invoked with 'new' (when importing the library into a react project and running in the browser)

在使用jQuery的函数中按类设置焦点:

<h:inputText id="test" class="testClass"/>