0

在我的简单 XPage 中,我有一个带有公式项的复选框组:

document1.getValue("cHumanNames") + "|" + document1.getValue("cUserID")

清单cHumanNamescUserID没问题,所以我查看并检查John Smith并提交john234。如所须。

我被要求在单独的列表中显示选中的名称(用于控制...),看来我无法从userID. 必须有一种方法可以选择用于显示的值:

getcomponent("checkBoxGroup1").??????

当然,如果我使用getValue(),我会得到 ID 列表,但我需要名称。那价值在哪里?

4

3 回答 3

1

您可以修改此 XSnippet 以搜索别名值的标签:

http://openntf.org/XSnippets.nsf/snippet.xsp?id=get-selectable-values-of-a-component

或者您可以使用变量的索引为您的值找到正确的标签(存储在文档中。)

于 2013-02-26T21:25:47.137 回答
1

当您查看生成的复选框组的 HTML 源代码时,您会发现如下内容:

<label><input name="view:_id1:checkBoxGroup1" value="john234" type="checkbox"> John Smith</input></label>

基本上,标签John Smith永远不会提交给数据源。如果您正在寻找 SSJS 实现,那么 Sven Hasselbach 的答案会起作用。如果您正在寻找客户端 JavaScript 实现,那么下面的代码片段应该可以工作:

function getCheckedValues() {
    var checkedValues = new Array();
    dojo.query("input[name=\"#{id:checkBoxGroup1}\"]").forEach(
        function(node) {
            if (node.checked) {
                checkedValues.push(node.parentNode.innerText);
            }
        }
    );
    return checkedValues.join(", ");
}

上面的代码片段是为 name 的复选框组编写的checkBoxGroup1

于 2013-02-27T06:01:46.943 回答
0

在服务器端,没有简单的方法来获取显示值 - 选定的值仅作为别名保留,其余的可能仅用于渲染。您可以尝试添加额外的抽象层并创建一个地图,为您的复选框和您的列表提供值。该列表将简单地使用地图将检查值转换为显示值。

于 2013-02-26T20:05:56.457 回答