如何在 CSJS 中获取重复控制的索引

Sea*_*ing 1 indexof repeat xpages

我在互联网上搜索过,发现这个 Xpages 在 CSJS 中获得了重复索引但是......它对我不起作用

这是我的代码(部分)

<xp:repeat id="repeat1" rows="30" var="currentDetail" indexVar="detailIndex" value="#{LeaveBean.details}">
    <xp:inputText id="leavefrom" value="#{currentDetail.subfromtime}">
           <xp:eventHandler event="onblur" submit="false" refreshMode="partial" refreshId="repeat1">
                     <xp:this.script><![CDATA[........]]></xp:this.script>
          </xp:eventHandler>
    </xp:inputText></xp:repeat>
Run Code Online (Sandbox Code Playgroud)

我想要做的是一旦用户单击输入字段,然后我就可以得到他编辑的哪一行,我像 LeaveBean.dosomething( detailIndex )一样使用了 ssjs ,但是如何获取 csjs 中的索引?

Marky Roden(对我来说很棒的人 XD)建议使用 attr 来获取它......但是......我是 xpages 的全新人,所以不知道如何将它添加到我自己的代码中,我的意思是,我试图添加诸如

<xp:this.attrs>
     <xp:attr name="seanIndex"
      value="???">
     </xp:attr>
</xp:this.attrs>
Run Code Online (Sandbox Code Playgroud)

但该值不能像#{detailIndex},否则页面会崩溃……那我现在该怎么办……

Knu*_*ann 5

将隐藏文本字段添加到重复控件中,并将索引作为值

    <xp:text
        escape="true"
        id="detailIndexText"
        value="#{detailIndex}"
        style="display:none">
    </xp:text>
Run Code Online (Sandbox Code Playgroud)

然后你可以在客户端获取索引

    var index = document.getElementById("#{id:detailIndexText}").innerHTML
Run Code Online (Sandbox Code Playgroud)

更新

不需要隐藏字段的较短版本只是:

    var index = #{javascript:detailIndex};
Run Code Online (Sandbox Code Playgroud)