用于数据更新或验证的Xpage动态ID(CSJS)

时间:2013-09-16 06:10:25

标签: xpages

在描述问题之前,我想补充一点,我已经在谷歌上找到了这个问题并找到了许多解决方案但没有与 XPAGES 相关的解决方案。因为,Xpage有一个独特的方法来生成字段id我正面临这个问题。我也在IBM论坛上发布了同样的问题并在那里等待回复(http://www-10.lotus.com/ldd/ndseforum.nsf/xpTopicThread.xsp?documentId=EDEBB14BDF2E804F85257BE8001E4F76):

问题:

我正在尝试将动态ID传递给默认函数getElementById但没有成功。为了清楚地解释它,我对特定字段进行了前端验证。该字段存储在数据库中。所以,我有一个for循环运行所有字段。这里的问题是XPages动态生成Id,因此如果有分层的选项卡式面板,那么同样的形式,Id也包含标签面板Id。

以下是问题的代码视图:

检索值(CSJS)的标准方法是:

的document.getElementById( “#{ID:inputText1}”)。值;

但是,如果我尝试传入动态ID。它不起作用。我尝试过在Google上找到的“n”种方法但没有关于这个问题。我在这里尝试的一个解决方案是:

var x =“inputText1”;

的document.getElementById( “#{ID:” + X + “}”)值;

真的很感激任何帮助。真的很想听到一些好的建议。

1 个答案:

答案 0 :(得分:1)

"#{id:inputText1}"部分是在服务页面之前在服务器上计算的,因此在客户端JS中设置ID为时已晚。

要在SSJS中设置ID,您可以这样做:

document.getElementById("#{javascript:var x='inputText1'; getClientId(x)}").value;

使用getClientId,您还可以在SSJS中构建一个CSJS ID数组。然后你可以在CSJS中循环该数组。你可以用这种方式构建数组:

var strIDs = ${javascript:'["a","b","c"]'};