2012-11-01 69 views
0

我創建JSF按鈕的這個例子有問題的對話框:與對話JSF按鈕沒有呈現

<!-- hidden button --> 
<h:commandButton id="deleterow" value="HiddenDelete" action="#{AccountProfileTabGeneralController.saveData}" style="display:none" update="growl"> 
    <f:ajax render="@form" execute="@form"></f:ajax> 
</h:commandButton> 

<!-- edit button --> 
<h:button style="position:absolute; bottom:12px; right:12%;" rendered="#{AccountProfileTabGeneralController.editable}" styleClass="lbimage" value=" Save Account " onclick="editdialog(this, 'Do you want to save the changes?'); return false;" /> 

我用這個JS來顯示對話框:

function editdialog(button, a){  
    $("<div />", { 
     text: a 
    }).dialog({   
     width: 600, 
     buttons: { 
      "Ok": function() { 
       $("#form\\:deleterow").click(); 
       $(this).dialog("close"); 
       button.value = "Processing..."; 
       button.disabled = true;     
      }, 
      "Cancel": function(event) { 
       $(this).dialog("close"); 
       event.preventDefault(); 
       button.value = "Save Account"; 
       button.disabled = false; 
      } 
     } 
    });   
} 

但由於某些原因,然後我單擊確定按鈕該按鈕被禁用,它無法正常工作,也許表單的ID不正確。我用這個<h:form id="general">

我該如何解決這個問題?而且我怎樣才能使用不同編號的表單中的代碼?

回答

2

如果您有窗體的ID爲「一般」,jQuery選擇也許應該是

$("#general\\:deleterow") 

但正如你指出的那樣,你可以有不同的形式,這樣選擇是非常具體的。

我想你想要的東西,如:

$(button).closest("form").find("[id$=deleterow]").click(); 

這樣做是找到的第一個父發起editDialog功能按鈕的form元素,然後找到形成具有內部的任何元素以「deleterow」結尾的id。這應該起作用,因爲該元素的id將類似於「form_id:deleterow」。

+0

是的,這解決了這個問題。謝謝! – user1285928