2

ダイアログボックスの送信時にアイコン/ボタンを非表示にしたい...アイコン/ボタンを中に配置するとコードが機能しなくなります<h:form>

これは私のアイコンのコードです

<h:outputLink id="loginLink" value="javascript:void(0)"
                onclick="dlg.show()">
            <p:graphicImage value="/images/logo.png" />
</h:outputLink>

これはダイアログボックスのコードです

<p:dialog id="dialog" header="Login" widgetVar="dlg">
    <h:form>
        <p:commandButton value="Login"
                oncomplete="handleLoginRequest(xhr, status, args)" />
    </h:form>
</p:dialog>

これが私のスクリプトです

<script type="text/javascript">
function handleLoginRequest(xhr, status, args) {
        dlg.hide();
    jQuery('#loginLink').fadeOut();
    alert("This is working fine");
}
</script>

このようにすべてが正常に機能します。alert("This is working fine");正常に機能し、アイコンもフェードアウトします。

しかし、アイコンをアイコンの内側に配置<h:form></h:form>してもフェードアウトしません(スクリプトは正常に機能していますが、アイコンの内側に到達できません<h:form>

元:

<h:form>
    <h:outputLink id="loginLink" value="javascript:void(0)"
            onclick="dlg.show()">
        <p:graphicImage value="/images/logo.png" />
    </h:outputLink>
</h:form>

このように私は問題に直面しています:(

PS:内部に配置する必要のある<h:form>コードを配置するので、使用する必要があります<p:menuitem><h:form>

4

2 に答える 2

2

返信ありがとうございます:)以下のコードは私のためにうまく機能しています

<h:form id="loginForm">

とjavaScriptで

jQuery('#loginForm').fadeOut();

(#id offormの代わりに#idof button/link

このようにして、アイコン/ボタンがある完全なフォームを非表示にすることができます...

実際、ボタン/リンクを配置しているとき、ボタン<h:form>のID内のアイコンがjavaScriptに表示されません

私がIDを与えて<h:form>、単一のコンポーネント(ボタン)の代わりにフォーム全体を非表示にしているとき、それは私にとってうまく機能します:)

<p:menutem/>これがうまくいくことを願ってこれを試してみます...

于 2012-08-24T09:22:47.700 に答える
1

フォーム全体を非表示にする代わりに、以下を使用してのみフォーム内の要素のみを非表示にすることができます。

<h:form id="loginForm">
    <h:outputLink id="loginLink" />
</h:form>

<script type="text/javascript">
    function handleLoginRequest(xhr, status, args) {
        dlg.hide();
        $("[id='loginForm:loginLink']").fadeOut();
    }
</script>

上記の例では、jQueryはIDの「:」をエスケープします。

JSFのバインディングを利用することもできます。

<h:form>
    <h:outputLink binding="#{loginLink}"/>
</h:form>

<script type="text/javascript">
    function handleLoginRequest(xhr, status, args) {
        dlg.hide();
        $("[id='#{loginLink.clientId}']").fadeOut();
    }
</script>

あなたの選択を選んでください;-)

于 2012-08-25T10:45:55.213 に答える