0

私は jsf と primefaces コンポーネントを使用しており、jquery を介して h:outputText に値を設定したい

クロムツールでタグを調べます(IDは同じです)

ただし、要素に値が設定されていないのは、jsf コードです。

 <p:confirmDialog id="confirmDialog" message="Etes vous sur de vouloir supprimer ce Type #{typeMB.selectedType.libelle}"  
                             header="confirmation de suppression" severity="alert" widgetVar="confirmation"> 
                             <h:outputText id="fortest" value="donc" /> 

<h:form>
                <p:commandButton id="confirm" value="oui" update=":form:ourdatatable" oncomplete="confirmation.hide()"  actionListener="#{typeMB.supprimer}" />  
                <p:commandButton id="decline" value="non" onclick="confirmation.hide()" type="button" />   
</h:form>
            </p:confirmDialog> 

ここに私の h:outputText タグの html コードがあります:

<span id="fortest">donc</span>

ここにjqueryスクリプトがあります:

<script type="text/javascript">  


 $(function() {      




     $('#form\\:ourdatatable\\:0\\:alors').click(function() {
          alert("I am here");
          var classList =$('#form\\:ourdatatable\\:0\\:alors').attr('class').split(/\s+/);
          $.each( classList, function(index, item){
              if(index > 1){
                  alert("I am here here ");
                  $('#fortest').text('here here');

              }

              });
        });


 });

</script> 

.text() と val() と html() メソッドをテストしましたが、値が設定されていません

前もって感謝します

4

3 に答える 3

1

問題は次のとおりです。クリックイベントには2つのコールバック関数があります.ajaxを使用しているため、プライムフェイスよりも非常に高速です.関数を実行すると、マークアップはまだ準備ができていないため、期待どおりの動作をしません. !

解決策: コールバックを順次チェーンする必要があります (primefaces コールバックが終了した後に関数を実行します)。これを実装するには、 promiseを使用して ConfirmDialog を監視します (間違った要素を監視すると機能しないことに注意してください)。

于 2013-03-16T09:06:48.603 に答える
-2

$('#fortest').val('here here')not の値を設定したときのはず です$('#fortest').text('here here')。としてレンダリングされている場合でもspan、JSF コンポーネントが値を取得します。そしてフォームに追加prependId="false"します。

于 2013-03-15T16:35:10.387 に答える
-2

prependId="false"各フォームに属性を追加してみてください

于 2013-03-15T16:06:52.203 に答える