如何在CSJS中获取重复控件的索引
How to get index of repeat control in CSJS
我在网上搜索了一下,找到了这个
Xpages get index of repeat in 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>
我想做的是一旦用户点击输入字段,我就可以得到他编辑的那一行,我使用 ssjs 就像 LeaveBean.dosomething(detailIndex ) 好吧,但如何在 csjs 中获取索引?
Marky Roden(对我来说是个了不起的人 XD)建议使用 attr 来获取它...但是...我是 xpages 的新手,所以不知道如何在我自己的代码中添加它,我的意思是,我尝试添加诸如
<xp:this.attrs>
<xp:attr name="seanIndex"
value="???">
</xp:attr>
</xp:this.attrs>
但是这个值不能像#{detailIndex}那样,否则页面会崩溃...所以我现在该怎么办...
将隐藏的文本字段添加到您的重复控件中,并将索引作为值
<xp:text
escape="true"
id="detailIndexText"
value="#{detailIndex}"
style="display:none">
</xp:text>
然后你可以在客户端获取索引
var index = document.getElementById("#{id:detailIndexText}").innerHTML
更新
不需要隐藏字段的较短版本只是:
var index = #{javascript:detailIndex};
您可以获得索引号。直接在cjs里面这样repeat控件:
<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[
var index = "#{javascript: return detailIndex;}";
// do whatever with index...
]]></xp:this.script>
</xp:eventHandler>
</xp:inputText></xp:repeat>
表达式“#{javascript: return detailIndex}”在服务器端求值,渲染的cjs是no.迭代次数。
通过这种方式,您可以避免呈现隐藏的输入和在 dom 树中进行搜索以获取编号。
我在网上搜索了一下,找到了这个 Xpages get index of repeat in 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>
我想做的是一旦用户点击输入字段,我就可以得到他编辑的那一行,我使用 ssjs 就像 LeaveBean.dosomething(detailIndex ) 好吧,但如何在 csjs 中获取索引?
Marky Roden(对我来说是个了不起的人 XD)建议使用 attr 来获取它...但是...我是 xpages 的新手,所以不知道如何在我自己的代码中添加它,我的意思是,我尝试添加诸如
<xp:this.attrs>
<xp:attr name="seanIndex"
value="???">
</xp:attr>
</xp:this.attrs>
但是这个值不能像#{detailIndex}那样,否则页面会崩溃...所以我现在该怎么办...
将隐藏的文本字段添加到您的重复控件中,并将索引作为值
<xp:text
escape="true"
id="detailIndexText"
value="#{detailIndex}"
style="display:none">
</xp:text>
然后你可以在客户端获取索引
var index = document.getElementById("#{id:detailIndexText}").innerHTML
更新
不需要隐藏字段的较短版本只是:
var index = #{javascript:detailIndex};
您可以获得索引号。直接在cjs里面这样repeat控件:
<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[
var index = "#{javascript: return detailIndex;}";
// do whatever with index...
]]></xp:this.script>
</xp:eventHandler>
</xp:inputText></xp:repeat>
表达式“#{javascript: return detailIndex}”在服务器端求值,渲染的cjs是no.迭代次数。
通过这种方式,您可以避免呈现隐藏的输入和在 dom 树中进行搜索以获取编号。