2013-02-11 82 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

相關問題