这是我第一次问一个论坛上的一个问题,因为通常我的问题已经被问和回答。 我还没有找到一个答案,这个问题对我的作品,所以在这里有云:
我做在JSF 2.0 Ajax调用是这样的:
< f :ajax listener="#{myReferenceController.clearRequiredReferenceNumber}"
onevent="resetFocus" execute="@form"
render=":resultsForm:ResultsDisplay" />
在听者的一切完美的作品,然后将数据呈现为预期中,我有我的.xhtml页面的数据表。 问题是,我在调用JavaScript onevent
似乎得到调用之前渲染完成的,因此在我的焦点重置为塔的处理datatable
不起作用,因为该datatable
被删除,然后重新 - 增加了当阿贾克斯完成重新渲染DOM。
我期待在我的JavaScript的“成功”的状态,因为在这一点上,渲染会完成的希望。 唉,这是不是这样的,我getElementById
(实际上dojo.byId
)未找到在数据表中的元素。 我知道,在正常情况下我的JavaScript功能,因为我打电话的情况下没有一个Ajax调用此相同的功能,一切都完美的作品出现。
如果我能避免渲染,我试图将焦点设置到表中,这将是巨大的电池,但我的听众正在更改在Ajax调用该小区。 我在我束手无策,等等任何想法将是非常赞赏。
- 响应Balusc(听说好东西你,顺便说一句)
嗯,我实际上是在正确的轨道,我认为,但似乎仍然有麻烦。 我检查了,即使在成功的“成功”静静的,我不能够在这里进行对焦。 下面是正在检查“成功”我的JavaScript函数:在另一种情况,在那里它没有连接到一个Ajax事件此功能。
function resetFocus(data) {
var theRow = dojo.byId("resultsForm:selectedRow").value;
if (data.status == "success") {
dojo.query('[widgetId]',dojo.byId('theResultsDataTable'))
.forEach(function(node) {
var widget = dijit.byNode(node);
var theId = widget.attr("id")
if (theId.indexOf(':' + theRow + ':') != -1) {
if (theId.indexOf('theOrppoNum') != -1) {
widget.focus();
widget.attr("isFocused",true);
}
}
});
}
}