在Livecycle ES2中编写脚本

时间:2013-07-25 13:18:54

标签: javascript adobe livecycle livecycle-designer

我的表单有几个名为“transType”的组,这些组中有一个文本字段和一组3个单选按钮。每个单选按钮组的值均为“是”,“否”和“已解决”。我在顶部有一个单选按钮组,当单击时,页面上的相应按钮也被选中,例如,我点击顶部组中的“否”,然后选择下面的所有“否”字段。我正在使用动作构建器来实现这一点,但它似乎很乏味,我将不得不为每个值执行此操作。下面是现在的脚本:


form1.#subform[0].transType[0].markAll::change - (JavaScript, client)
 if (this.rawValue == "1") {
   this.resolveNode("transType[1].exeError").rawValue = "No";
   this.resolveNode("transType[2].newEnrol").rawValue = "No";
   this.resolveNode("transType[3].enrolReq").rawValue = "No";
   this.resolveNode("transType[4].immPinChange").rawValue = "No";
   this.resolveNode("transType[5].pinChange").rawValue = "No";
   this.resolveNode("transType[6].loanProc").rawValue = "No";
   this.resolveNode("transType[7].contribChange").rawValue = "No";
   this.resolveNode("transType[8].allocChange").rawValue = "No";
   this.resolveNode("transType[9].allocChange403b").rawValue = "No";
   this.resolveNode("transType[10].transfTrans").rawValue = "No";
   this.resolveNode("transType[11].confEndBal").rawValue = "No";
   this.resolveNode("transType[12].confTarAlloc").rawValue = "No";
   this.resolveNode("transType[13].loanReq").rawValue = "No";
   this.resolveNode("transType[14].withdrawReq").rawValue = "No";
 }

我在Adobe论坛上发布了LiveCycle,但Adobe论坛基本没用。我能写一个更简单的脚本吗?也许是阵列?我在JavaScript中有点像n00b,但我可以跛行。 TIA !!!

2 个答案:

答案 0 :(得分:0)

如果您正在使用数据绑定,则可以将所有yes / no / not resolved绑定到同一个接口字段,以便它们都具有相同的值。这意味着如果您在顶部选择了一个值,则其余值将继承相同的值。

在过去的几年中使用过Livecycle,有更快的方法可以做到这一点,例如添加一个将每个字段设置为一个值的函数,但有时候Livecycle可能会有点松散,所以通常最好这样做如上所述。您可以使用case语句而不是if / elseif,然后只是复制相同文本并更改值的情况。 如果你想发送表格的副本,我会坚持各种选项,例如功能或案例,你可以看到它的外观/效果。

答案 1 :(得分:0)

从纯粹的javascript角度来看,您可以使用以下代码来减轻代码:

var fields = ["transType[1].exeError", 
                "transType[2].newEnrol",
                "transType[3].enrolReq",
                ...
                "transType[14].withdrawReq"];
var i, j, newValue;

switch(this.rawValue) {
    case "1" : newValue = "No"; break;
    ...
}

for(i=0, j=fields.length; i<j; i++) {
    this.resolveNode(fields[i]).rawValue = newValue;
}