调用Javascript函数,点击(隐藏)按钮或链接

时间:2013-02-11 13:47:19

标签: 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函数:

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

3 个答案:

答案 0 :(得分:6)

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

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

请注意,您可能需要在表单中添加表单前缀,例如

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

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

答案 1 :(得分:4)

此页面上必须有一个按钮(我怀疑,看到你无论如何隐藏它)?使用<p:remoteCommand/>此处

之类的内容可以更好地为您服务

抛弃隐藏按钮并替换为

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

,如果这是绝对要求,您可以使用您需要的功能中的click()方法轻松模拟js中的按钮点击

  1. <h:commandButton/>更改为<p:commandButton/>,以便为按钮分配widgetVar属性(以保证DOM中元素的名称)。可以在几乎所有主要组件上设置widgtetVar属性,以使您的生活更轻松

  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 = "";
               }
             }
    

答案 2 :(得分:1)

如果Daniel和Kolossus的最高答案对某些人没有帮助:我发现字符放在我设置的id的前面,因此这有助于我:

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

基本上,选择器说id以“hh”结尾,但可能不是完整的id 这在SF开发中也很有用,因为comandButtons等会发生同样的事情。