0

質問ダイアログ付きの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;
            } 
        }
    });         
}

しかし、何らかの理由で[OK]ボタンをクリックすると、ボタンが無効になり、機能しなくなります。フォームのIDが正しくない可能性があります。私はこれを使います<h:form id="general">

どうすれば問題を解決できますか?また、異なるIDのフォームでコードを使用するにはどうすればよいですか?

4

1 に答える 1

2

フォームのIDが「一般」の場合、jQueryセレクターはおそらく

$("#general\\:deleterow")

ただし、ご指摘のとおり、フォームが異なる場合があるため、セレクターは非常に具体的です。

次のようなものが欲しいと思います:

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

formこれが行うことは、関数を開始したボタンの最初の親要素を見つけてから、「deleterow」で終わるeditDialogフォーム内の要素を見つけることです。その要素の は「form_id:deleterow」のようなものになるidため、これは機能するはずです。id

于 2012-11-01T20:27:54.183 に答える