在LiveCycle Designer

时间:2017-01-31 10:20:08

标签: javascript arrays livecycle-designer

我对Javascript相对较新,并且已经掌握了一些用于在LiveCycle Designer ES4中创建表单的基本语言和函数。

我有4个复选框(比如" check1&#34 ;,检查2 ...),以及4个预定义数组(" array1",array2 ....)。 所有这些都有一个表,有3列,(col1,col2,col3)。

我想做的是:

  • 当我检查" check1"时,我想用array1填充表格的col2。
  • 然后为数组中的每个数据添加一个新行。
  • 我也想对其他复选框执行相同操作,根据需要添加到表中。

我尝试了一堆不同的选项,但似乎没有一个能够运作。 在这个阶段,我甚至无法获得一个阵列来填充表格,更不用说多个。

这是我目前的代码: (注释掉的部分只是尝试加入数组)

var array1 = new Array("one","two","Three","Four","Five");
var array2 = new Array("this","that", "and this");
var array3 = new Array("another one");
var array4 = new Array("Finally this");
var k = [];

//if(check1.rawValue == "Yes")

//{k = k.concat(array1)}

//if(check2.rawValue == "Yes")

//{k = k.concat(array2)}

for 
(i=0; i<array1.length; i++){
if (i>0) {Row01.InstanceManager.addInstance(1)}
xfa.resolveNode("Table.Row01["+i+"].col2").rawValue = array1[i];
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我测试了这个解决方案,它有效:) - 数组每次都会以相同的顺序加起来,如果你按照你点击复选框的顺序想要它可能会变得更复杂但是你并没有特别要求这样,所以我希望它足够了让你了解它是如何工作的:

开始之前:

  • 确保允许Row创建更多实例(底部的复选框)enter image description here
  • 确保您知道复选框的&#34; on&#34; -Value是什么(在我的情况下为1) enter image description here
  • 为您的代码创建一个Scriptobject(可选)
    enter image description here

在每个复选框内单击 - 事件写入logic.populateCol2();

 Formular1.#subform[0].Kontrollkästchen1[0]::click - (JavaScript, client)
logic.populateCol2();

logic Scriptobject中写下这个:

function populateCol2() {
    var array1 = ["one", "two", "Three", "Four", "Five"];
    var array2 = ["this", "that", "and this"];
    var array3 = ["another one"];
    var array4 = ["Finally this"];

    var cb1 = Kontrollkästchen1;
    var cb2 = xfa.resolveNode("Kontrollkästchen1[1]");
    var cb3 = xfa.resolveNode("Kontrollkästchen1[3]");
    var cb4 = xfa.resolveNode("Kontrollkästchen1[2]");

    //Put in all your checkboxes here and corresponding array
    var chbxs = [
        [cb1, array1],
        [cb2, array2],
        [cb3, array3],
        [cb4, array4]
    ];

    var allValues = [];
    for (var x = 0; x < chbxs.length; x++) {
        var currentCbx = chbxs[x][0];
        var currentArr = chbxs[x][1];
        //Or ==="Yes" in your case
        if (currentCbx.rawValue === 1) {
            allValues = allValues.concat(currentArr);
        }
    }

    //Set it back so it won't add up rows to infinity
    Table.Row01.instanceManager.setInstances(1);
    Table.Row01.col2.rawValue = "";

    for (var i = 0; i < allValues.length; i++) {
        if (i > 0) {
            Table.Row01.instanceManager.addInstance(true);
        }
        xfa.resolveNode("Table.Row01[" + i + "].col2").rawValue = allValues[i];
    }
}