XSP.partialRefresh在XSP.confirm之后不会触发

时间:2014-03-10 12:10:49

标签: xpages xpages-extlib

我的问题的简短概述:我有一个包含多个字段的大表单,其中一个是xe:djFilteringSelect,另一个是xp:comboboxxp:combobox是computet,具体取决于过滤选择中选择的值。现在,我的客户希望如果他们更改过滤选择已保存的文档的值,则应提示他们发出警告。所以我想在djfiltering选择的onChange事件中添加一条确认消息,取消它改变组合框的SSJS代码。

提示用户确认(“更改值?...”)框没什么大不了的,但如果用户选择“否”,则重新设置值(在ClientSide上)会给我带来很多麻烦。

我已经尝试过:

如果我使用简单确认操作,则所有进一步的onChange操作都会被取消,但djFilteringSelect字段会保留用户选择的值。因此,如果我在过滤时触发部分刷新,则选择原始值形式文档显示但我不知道在哪里添加它因为没有onCancel或者我错过了什么?

我还使用 window.confirm XSP.confirm 从CSJS尝试了它,如果用户选择“否”,则使用XSP.partialrefreshGet()重置值手册'但在这种情况下,部分刷新不起作用:

if(!XSP.confirm("execute?")){                                   
    XSP.partialRefreshGet("#{id:repeat1}",{
      onStart: function () {console.log("start");},
      onComplete: function () {console.log("finish");},
      onError: function () {console.log("error");}  
         });
    return false;
}

如果我将部分刷新移动到一个函数并从中调用它firebug它工作正常,但如果我在if(确认){}内部调用它它什么都不做。返回false确实有效,SSJS无法执行。文档中的值不会更改(按预期),但djFilteringSelect会将所选值保留在ClientSide上。

我也尝试了Mark Leusink的dojo-style Confirm,但是在这里部分刷新也遇到了同样的问题。

如果我将值设置为手动而不是使用dijit.byId(item).setValue的部分刷新,它将在另一个onChange事件...循环中重新生成。 更新:如果我使用dijit.byId(item).set(“value”,newVal,false),onChange不会直接触发它按预期更改值,但是当过滤选择时onChange会触发失去了焦点!?!? ...

所以我的问题:

  1. 如果用户选择“否”,是否有办法在确认操作后执行任何代码。
  2. 为什么我的CSJS中的部分刷新无法正常工作(我没看到firebug中的任何流量,即使刷新的onError被触发也没有任何错误)。
  3. 有没有人知道我的问题采用不同的方法?
  4. 更新: 我当前的“解决方案”是使用window.location.reload()而不是XSP.partialRefresh来重新加载站点。但是这个解决方案并不能让我满意,因为在IE中整个页面都在闪烁..在firfox中我可以忍受它。

0 个答案:

没有答案