3

非表示の commandButton をクリックする JavaScript 関数を呼び出しますが、関数を呼び出したときではなく、ページが読み込まれたときにクリックが実行されます。これは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 = "";
    }
}
4

3 に答える 3

7

このようactionにではなく、属性を使用する必要がありますonclick

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

このように、セレクタにフォームプレフィックスを追加する必要がある場合があることに注意してください

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

同じことが、commandLinkまたは他の「クリック可能な」コンポーネントでも機能します。

于 2013-02-11T13:51:01.813 に答える
4

このページにはボタンが必要ですか? <p:remoteCommand/>ここのようなものを使用すると、より良いサービスが得られます

隠しボタンを捨てて、

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

ただし、それが絶対的な要件である場合は、click()必要な関数のメソッドを使用して、js でボタンのクリックを非常に簡単にエミュレートできます。

  1. <h:commandButton/>を a に変更して<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 = "";
               }
             }
    
于 2013-02-11T14:47:03.700 に答える