在我的简单XPage中,我有一个带有公式项的复选框组:
document1.getValue("cHumanNames") + "|" + document1.getValue("cUserID")
列表cHumanNames
和cUserID
没问题,因此我看到并检查John Smith
并提交john234
。根据需要。
我被要求在单独的列表中显示已检查的名称(用于控制...),似乎我无法从userID
返回。必须有一种方法来选择用于显示的值:
getcomponent("checkBoxGroup1").??????
当然,如果我使用getValue()
,我会获得ID列表,但我需要这些名称。这个价值在哪里?
答案 0 :(得分:1)
您可以修改此XSnippet以搜索别名值的标签:
http://openntf.org/XSnippets.nsf/snippet.xsp?id=get-selectable-values-of-a-component
或者您可以使用变量索引为您的值找到正确的标签(存储在文档中)。
答案 1 :(得分: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(", ");
}
上面的代码段是针对名称为checkBoxGroup1
的复选框组编写的。
答案 2 :(得分:0)
在服务器端,没有简单的方法来获取显示值 - 所选值仅作为别名保留,其余值仅用于渲染。您可以尝试添加额外的抽象层,并创建一个地图,为您的复选框和列表提供值。该列表将仅使用地图将选中的值转换为显示值。