2013-02-11 51 views
2

我调用一个javascript函数,点击一个隐藏的commandButton,但点击运行时页面加载,而不是当我调用函数。 这是html代码:调用一个Javascript函数,点击一个(隐藏)按钮或链接

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

以及JavaScript函数:

function fnc() 
{ 
    length = document.getElementById('form:aa').value.length; 
    if(length == 10) 
    { 
     $("#hh").click(); 
     document.getElementById('form:aa').value = ""; 
    } 
} 

回答

6

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

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

请注意,您可能需要向选择器添加表单前缀,如下所示:

$("#myFormId\\:hh").click(); 

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

+0

另外,也许'hh'不是''生成的ID。 – 2013-02-11 14:22:37

4

必须在这个页面上有一个按钮(我怀疑,看到你反正躲着它)?你使用类似<p:remoteCommand/>这里

沟隐藏按钮,并与

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

更换更好的服务,如果它是一个绝对的要求,你可以很方便地模拟点击一个按钮与JS从功能click()方法,你需要

  1. 更改<h:commandButton/><p:commandButton/>,所以你可以指定按钮widgetVar属性(保证DOM中元素的名称)。该widgtetVar属性可以被设置在几乎所有primefaces组件,让您的生活更轻松

  2. 使用widgetVar,只需调用click()方法在功能

    <p:commandButton ajax="false" widgetVar="theButton" id="hh" action="#{bonBonneManagedBean.kk()}" style="display:none"/> 
    <p:inputText id="aa" widgetVar="theTextBox" value="#{bonBonneManagedBean.sel}" onkeyup="fnc()" /> 
    

    ,并在功能:

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

如果Daniel和Kolossus的最佳答案不能帮助某人:我发现人物得到了p UT在我在我的情况下设置的ID前面,所以帮我:

$('[id$=hh]').click(); 

基本上选择跟它的ID以“HH”结束,但可能不完整ID。
这对于SF开发也很有帮助,因为同样的事情发生在comandButtons等等。

+0

请了解有关命名容器的信息。没有任何东西放在它的前面,它们是命名容器的编号。完全解决组件更好。只要确保命名容器已经明确指定了id – Kukeltje 2016-12-12 20:23:19

相关问题