0

我使用 jsf 和 primefaces 组件,我想通过 jquery 为 h:outputText 设置一个值

我用chrome工具检查标签(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

问题如下: click 事件有两个回调函数,你的比 primefaces 快得多,因为它使用 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 回答