通过编辑框值乘以计算值

时间:2013-11-20 21:23:22

标签: javascript xpages

我的主要目标是将两个字段相乘并在另一个计算字段(里程字段)中显示/保存答案。我想将计算字段totalKM(不是表单)乘以编辑框字段perKM(在表单中)默认为.52。

为方便起见,我在下面附上了所有字段。

<xp:table>
    <xp:tr>
        <xp:td>
            <xp:label value="Mileage:"
                id="mileage_Label1" for="mileage1">
            </xp:label>
        </xp:td>
        <xp:td>
            <xp:text escape="true" id="mileage">
                <xp:this.converter>
                    <xp:convertNumber type="number"></xp:convertNumber>
                </xp:this.converter>
                <xp:this.value>
                    <![CDATA[#{javascript:return claimDoc.getItemValue("perKM");}]]>
                </xp:this.value>
            </xp:text>
        </xp:td>
        <td></td>
        <td></td>
    </xp:tr>
    <xp:tr>
        <xp:td>
            <xp:label value="Total KM" id="label1"></xp:label>
        </xp:td>
        <xp:td>
            <xp:text escape="true" id="totalKM"
                style="font-weight:bold">
                <xp:this.value>
                    <![CDATA[#{javascript:var cView:NotesView = database.getView("expenses");
                        var nav:NotesViewNavigator = cView.createViewNav();

                        var entry:NotesViewEntry = cView.getEntryByKey((@Name("[CN]",context.getUser().getDistinguishedName())),true);
                        entry = nav.getPrev(entry);
                        if (entry == null ) {
                        //donothing
                        }
                        else {
                            return entry.getColumnValues()[2];
                            }   }]]>
                </xp:this.value>
            </xp:text>
        </xp:td>
        <xp:td>
            by
            <xp:inputText id="inputText1"
                style="width:30px" value="#{claimDoc.perKM}"
                defaultValue=".52">
                <xp:this.converter>
                    <xp:convertNumber type="number"></xp:convertNumber>
                </xp:this.converter>
            </xp:inputText>
            cents
        </xp:td>
        <xp:td>
        </xp:td>
    </xp:tr>
</xp:table>

1 个答案:

答案 0 :(得分:0)

您可以通过使用java和托管bean来实现此目的。这不是你能做到的唯一方法,但我会以最好的方式冒险。

您应该直接将字段绑定到托管bean,如下所示: enter image description here

使用编辑框创建字段(即使是不可编辑的结果)

在托管java bean中,对于要自动计算的值,请执行以下操作: enter image description here

  1. 删除或注释掉'setter'
  2. 将计算结果的代码放在'getter'
  3. 由于您注释掉了setter,因此结果字段不可编辑
  4. 您需要做的最后一件事是创建部分更新以刷新容纳您要计算的字段的容器。它可以与可编辑字段位于相同或不同的容器中。


    这是我撰写的博客文章的链接,描述了我如何实现这一点:http://notesspeak.blogspot.com/2013/06/dynamic-computed-values-in-xpage.html

    如果您之前没有使用过托管bean或java,那么值得花时间在Connect 2013上观看有关托管bean的两小时课程.Russ Maher是一位优秀的老师。 http://ibmtvdemo.edgesuite.net/software/lotus/connect_2013/01-Sunday/JMP402/JMP402.html

    还有很多博客文章,以及9个视频中的笔记。