簡體   English   中英

jQuery操作僅一次(JSF,Primefaces)

[英]jQuery manipulation only once (JSF, Primefaces)

我有一個要修改字體大小的數據表。 用戶可以使用selectOneMenue組件設置字體大小。

現在,如果我使用jQuery更新它,這只會在第一次發生。 如果我想通過selectOneMenue更改字體大小,則將字體大小設置為默認值,如果進行刷新(F5),則成功更改字體大小。 但是我不希望這種行為。

因此,我在腳本部分添加了reload()函數。 如果執行此操作,如果我想重新加載.....,我總是會收到此Firefox消息,然后它將以默認大小呈現表格,並在呈現正確的字體大小之后不久。 因此最終產品還可以,但是我不希望出現此必須提交的firefox消息,並且我還想關閉使用默認字體大小的表格的預渲染。

現在我有了這段代碼

<script>
        jQuery(document)
                .ready(
                        function() {
                            jQuery('#dtSummary')
                                    .css('cssText',
                                            'font-size:#{summaryBean.selectedFont}px !important');

                        });

        function changeFont() {
            document.getElementById("dtSummary").style.fontSize = "#{summaryBean.selectedFont}px !important;}";
            window.location.reload(true);
        }
    </script>


<h:form id="form" prependId="false">
        <h:panelGroup>
            <h:panelGrid columns="3" styleClass="rainstar-form-inline"
                columnClasses="rainstar-form-column-left rainstar-form-column-right">


                <p:selectOneMenu id="targ" effect="fade"
                    styleClass="rainstar-input-small2"
                    value="#{summaryBean.selectedFont}"
                    valueChangeListener="#{summaryBean.selectionFont_change}"
                    onchange="changeFont()">
                    <f:selectItems value="#{summaryBean.fontCollection}" />
                    <p:ajax update="dtSummary" />
                </p:selectOneMenu>
            </h:panelGrid>
            <p:commandButton value="#{msg.button_print}" icon="ui-icon-print"
                styleClass="rainstar-button-right"
                action="#{summaryBean.generatePdf()}" ajax="false" />


            <p:dataTable id="dtSummary" styleClass="rainstar-form-margin-top"
                value="#{summaryBean.eintragList}"
                selection="#{summaryBean.selectedEintrag}" selectionMode="multiple"
                var="eintrag" rowKey="#{eintrag.it1}">

                <p:column id="header" styleClass="ui-state-default">
                    <div class="ui-dt-c">#{eintrag.it1}</div>
                </p:column>

                <p:column styleClass="rainstar-table-item"
                    headerText="#{tableBundleBean.summary_table_nozzles} [mm]">
                    <h:outputText value="#{eintrag.it2}" />
                </p:column>

            </p:dataTable>

        </h:panelGroup>


    </h:form>

您實際上不需要在這里使用jquery。 嘗試:

<p:column styleClass="rainstar-table-item"
          headerText="#{tableBundleBean.summary_table_nozzles} [mm]">
   <h:outputText value="#{eintrag.it2}" style="font-size:#{summaryBean.selectedFont}px !important"/>
</p:column>

例如,出於性能原因,如果您想避免服務器往返和渲染,則使用Jquery會很有意義。 在這種情況下,selectMenu小部件不應導致頁面刷新。

我不太確定將為您的選擇框生成哪個ID,但是假設它將獲得ID“ targ”,則應執行以下操作:

$(document).ready(
  changeFontSize
)

function changeFontSize() {
  $('#dtSummary').css('fontSize', $('.targ').val() + 'px !important');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM