我遇到问题,让jequery自动完成工作为重新渲染的文本字段。
我有一个a4j:commandlink来显示我的表单中的更多输入字段,当点击它时,我reRender外部a4j:outputpanel来reRender内容。但令我惊讶的是,jQuery自动完成事件从未针对我拥有的reRendered文本字段触发。它在reRender之前按预期工作。文本字段根据其ID来自动完成,来自Google地图,如下所示:
jQuery(document).ready(function(){
jQuery("#createActivityAddressInputId").autocomplete({
//This bit uses the geocoder to fetch address values
...
});
}
<a4j:outputPanel id="createActivityPanel">
...
<h:inputText id="#{GUIComponentIds.createActivityAddressInputId}" value="#"
{activityRequestBean.newActivityAddress}" />
<a4j:commandLink value="#{msg.createActivityShowmapLabel}"
oncomplete="onShowMapPanel()" action="#{activityRequestBean.showMapClicked}"
rendered="#{!activityRequestBean.showMap}"
reRender="createActivityMapPanel,createActivityPanel" />
...
</a4j:outputPanel>
我当时认为这可能与自动完成事件有关,因为文档加载了,或者我离开这里了?
谢谢!
答案 0 :(得分:1)
是;每次重新渲染时,都需要通过调用相同的方法重新附加自动完成。 (可能您会缓存传递给自动完成的选项。)
类似的东西:
var autocompleteOptions = null;
$(function ()
{
autocompleteOptions = getFromGeocoder();
});
function onReRender()
{
$("#createActivityAddressInputId").autocomplete(autocompleteOptions);
}
每当您重新渲染控件时,请致电onReRender
。
答案 1 :(得分:-1)
您需要在重新生成元素后执行jQuery。或者你可以尝试在每个元素上绑定jQuery事件,即使在jQuery(document).ready()之后添加到DOM。
编辑: 改变了实时方法调用 编辑: 删除代码示例,因为它只是错误的