如何使用js以编程方式在xpage中创建文本字段

时间:2015-01-07 06:24:49

标签: xpages xpages-ssjs xpages-extlib

需要一点帮助。我对JS还有点新意,所以我在这里处于危机之中。我需要在Xpage中使用JS或SSJS以编程方式创建文本字段,而我真的输了。例程是当我单击一个按钮时,将添加一个文本字段。我将感谢您的每一个帮助和建议。提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您只想添加一个文本字段,请在XPage中创建此字段,但最初不要渲染它。该按钮可以设置 viewScope变量,如果设置了此viewScope变量,则文本字段的呈现代码将返回true。这样,单击按钮后,该字段将可见。

如果要动态添加多个文本字段,请使用重复控件。同样,使用一个viewScope变量,该变量将包含您将按按钮设置的文本字段名称列表。此viewScope变量是重复控件的value属性。

重复控制的例子:

<xp:this.data>
    <xp:dominoDocument
        var="document1"
        formName="Test">
    </xp:dominoDocument>
</xp:this.data>
<xp:repeat
    id="repeat1"
    rows="100"
    value="#{viewScope.fields}"
    var="fieldName">
    <xp:label
        value="#{fieldName}"
        for="inputText1">
    </xp:label>
    <xp:inputText
        id="inputText1">
        <xp:this.value><![CDATA[#{document1[fieldName]}]]></xp:this.value>
    </xp:inputText>
    <br />
</xp:repeat>
<xp:button
    value="Add Field"
    id="button1">
    <xp:eventHandler
        event="onclick"
        submit="true"
        refreshMode="partial"
        refreshId="repeat1">
        <xp:this.action><![CDATA[#{javascript:
            if (!viewScope.fields) {
                viewScope.fields = [];
            } 
            viewScope.fields.push("field" + (viewScope.fields.length + 1));
        }]]></xp:this.action>
    </xp:eventHandler>
</xp:button>