Jsf 调用在(隐藏的)按钮或链接上单击的Javascript函数

Jsf 调用在(隐藏的)按钮或链接上单击的Javascript函数,jsf,primefaces,Jsf,Primefaces,我调用了一个javascript函数,该函数单击隐藏的commandButton,但单击在页面加载时运行,而不是在调用该函数时运行。 这是html代码: <p:inputText id="aa" value="#{bonBonneManagedBean.sel}" onkeyup="fnc()" /> <h:commandButton id="hh" onclick="#{bonBonneManagedBean.kk()}" style="display:none"/>

我调用了一个javascript函数,该函数单击隐藏的commandButton,但单击在页面加载时运行,而不是在调用该函数时运行。 这是html代码:

<p:inputText id="aa" value="#{bonBonneManagedBean.sel}" onkeyup="fnc()" />
<h:commandButton id="hh" onclick="#{bonBonneManagedBean.kk()}" style="display:none"/>

您应该使用
action
属性,而不是像这样单击
onclick

<h:commandButton id="hh" action="#{bonBonneManagedBean.kk()}" style="display:none"/>
$("#myFormId\\:hh").click();

这同样适用于
commandLink
或任何其他“可点击”组件。

此页面上是否必须有按钮(我怀疑,因为您一直在隐藏它)?在这里使用类似
的东西会更好

删除隐藏按钮并替换为

<p:remoteCommand name="fnc" actionListener="#{bonBonneManagedBean.kk}"/>
在函数中:

 function fnc(){
     length = theTextBox.value.length;
     if(length == 10){
       theButton.click()
        theTextBox.value = "";
           }
         }

如果Daniel和Kolossus给出的最重要的答案对某人没有帮助:我发现我在我的案例中设置的id前面有字符,因此这对我有帮助:

$('[id$=hh]').click();
基本上,选择器表示id以“hh”结尾,但可能不是完整id。

这在SF开发中也很有帮助,因为comandButtons等也会发生同样的事情。

此外,可能
hh
不是
生成的ID。请了解namingcontainers。没有任何东西放在它前面,它们是namingcontainers的id。完全寻址组件更好。只需确保namingcontainers已显式分配id
 function fnc(){
     length = theTextBox.value.length;
     if(length == 10){
       theButton.click()
        theTextBox.value = "";
           }
         }
$('[id$=hh]').click();