XPages-多次单击可创建多个文档

XPages-多次单击可创建多个文档,xpages,Xpages,我的表单有两个提交按钮——一个用于提交,另一个用于更新文档。有一个代理在PostSaveDocument事件上运行。在这个代理中,有一组代码发送一些警报,并设置一些文档值,这取决于它是新文档还是文档的更新 当用户多次单击按钮时,例如双击或只是快速点击10次,则生成该数量的文档。在代码中,它创建了一个参考号,这个数字是按按钮被点击的次数顺序排列的,所以它是在排队等待被点击的次数 我尝试了两种选择: 单击按钮时运行以下代码,但不会停止多次单击 var buttonComp = getCompone

我的表单有两个提交按钮——一个用于提交,另一个用于更新文档。有一个代理在PostSaveDocument事件上运行。在这个代理中,有一组代码发送一些警报,并设置一些文档值,这取决于它是新文档还是文档的更新

当用户多次单击按钮时,例如双击或只是快速点击10次,则生成该数量的文档。在代码中,它创建了一个参考号,这个数字是按按钮被点击的次数顺序排列的,所以它是在排队等待被点击的次数

我尝试了两种选择:

  • 单击按钮时运行以下代码,但不会停止多次单击

    var buttonComp = getComponent("button4");
    buttonComp.setDisabled(true);
    
  • 查看此帖子


然而,这两种方法对我都不管用。我想这是因为它没有处理标准的提交表单,但我不确定。有什么想法吗?

首先:如果可以避免,不要使用代理。启动代理运行时,然后再次将其拆下是非常缓慢的。您最好用SSJS编写代码。其次,您必须在onClick事件(查找客户端代码选项卡)内编写禁用代码(或者更好的是visible=false)。另一个选项是显示一个带有“处理”的灯箱,该灯箱覆盖按钮而不禁用按钮。

首先:如果可以避免,请不要使用代理。启动代理运行时,然后再次将其拆下是非常缓慢的。您最好用SSJS编写代码。其次,您必须在onClick事件(查找客户端代码选项卡)内编写禁用代码(或者更好的是visible=false)。另一个选项是显示一个带有“处理”的灯箱,该灯箱覆盖按钮而不禁用按钮。

我完全同意Stephan将代理转换为SSJS


但是,如果你不能更改代码,请尝试使用

我完全同意Stephan将代理转换为SSJS


但是,如果你不能更改代码,请尝试使用

尝试禁用客户端onClick事件中的按钮(当然使用客户端JS),我已经使用了CSJS“document1.getElementById(“button4”).disabled=true”,现在表单没有提交。我通常使用SSJS,我的语法错了吗?(为我怀疑的是一个愚蠢的问题道歉)。CSJS会阻止SSJS执行吗?CSJS在SSJS之前运行。CSJS需要返回true或false。False将停止SSJS运行,而true将允许SSJS运行。因此,请在禁用按钮后尝试添加“return true”。请确保没有指向同一文档的多个数据源设置。我添加了“return true”,代码现在“运行”,但它不会禁用按钮,多次单击仍会导致创建多个文档。我已经将代码移到了一个新按钮,放在CSJS的“执行脚本”中,但它不起作用。我还尝试了“.visible=false”而不是“.disabled=true”,两者都不起作用?尝试禁用客户端onClick事件中的按钮(当然使用客户端JS)我使用了CSJS“document1.getElementById(“button4”).disabled=true”,现在表单不提交。我通常使用SSJS,我的语法错了吗?(为我怀疑的是一个愚蠢的问题道歉)。CSJS会阻止SSJS执行吗?CSJS在SSJS之前运行。CSJS需要返回true或false。False将停止SSJS运行,而true将允许SSJS运行。因此,请在禁用按钮后尝试添加“return true”。请确保没有指向同一文档的多个数据源设置。我添加了“return true”,代码现在“运行”,但它不会禁用按钮,多次单击仍会导致创建多个文档。我已经将代码移到了一个新按钮,放在CSJS的“执行脚本”中,但它不起作用。我还尝试了“.visible=false”而不是“.disabled=true”,这两个选项都不起作用?谢谢-我确实尝试了上面的代码,将visible设置为false,但它似乎仍在等待代理运行。这样说,当我将代码放在一个单独的按钮中时,它不会隐藏它(运行CSJS)。我添加的代码如下“document1.getElementById(“button8”).visible=false;return true”。谢谢-我确实尝试了上面的代码,将visible设置为false,但它似乎仍在等待代理运行。这样说,当我将代码放在一个单独的按钮中时,它不会隐藏它(运行CSJS)。我添加的代码如下“document1.getElementById(“button8”).visible=false;return true”。这看起来很不错,但我不能100%确定如何在xPage中使用按钮。我只真正使用过std-xpage控件。开始研究这一点-设法创建了一个dojo按钮(是的,不难),但不确定何时使用源代码更改文本等。xPage中的代码在哪里?它应该出现在dojo按钮的客户端/服务器端事件中,还是需要直接添加到按钮的xPage代码中?这对其他人来说可能是显而易见的,但对我来说不是现在…我不知道如何将代码粘贴到这里。。但是,您必须将dojox.form.BusyButton作为dojomodule包含在参考资料下,并为dojo属性数据dojo props value busyLabel:“10秒”和另一个属性timeout及其值指定为no of seconds。这看起来很好,但我不能100%确定如何在xPage中使用该按钮。我只真正使用过std-xpage控件。开始研究这一点-设法创建了一个dojo按钮(是的,不难),但不确定何时使用源代码更改文本等。xPage中的代码在哪里?它应该出现在dojo按钮的客户端/服务器端事件中,还是需要直接添加到按钮的xPage代码中?这对其他人来说可能是显而易见的,但对我来说不是现在…我不知道怎么做