获取发生了更改的行并自动更新合计

aki发表于:2017年02月22日 09:39:39更新于:2022年07月27日 10:28:49

开发者中心包含此范例模板(获取发生了更改的行并自动更新合计),请前往开发者中心下载学习。

概要

本次介绍2016年5月升级时新增的使用记录编辑事件“获取发生了更改的字段及表格内的行对象”

在升级前,如果要获取发生了更改的表格内的行对象或表格外的对象,需要把更改前的信息保存在另外的数组中,然后拿当前的字段信息与之比较,找出发生了更改的地方。
更新后,可以只查找发生了更改的行的值,使用简单的代码就可以完成处理。

准备应用

本次做一个可以统计销售额的应用,按一下单选按钮即可更改统计结果。添加的字段如下。

字段类型字段名称字段代码备注
表格表格表格本范例里勾选“隐藏表格名称”
日期日期日期
数值单价单价
数值个数个数
单选按钮单位

单位

选项:

  •  个

  •  件

数值合计合计

0015eba44a36a8c77c0b26a8f235a3a

把表格字段拖到表单后,分别将“日期”、“单价”、“个数”、“单选按钮”、“合计”字段添加到表格。


JavaScript

本次要在记录添加页面和记录编辑页面,对“单价”、“个数”、“单选框”这3个字段值发生更改时进行处理,因此要写上多个事件。

  • 'app.record.edit.change.单位'

  • 'app.record.edit.change.单价'

  • 'app.record.edit.change.个数'

  • 'app.record.create.change.单位'

  • 'app.record.create.change.单价'

  • 'app.record.create.change.个数'

伴随着这次升级,代码需要做的处理如下。

・使用计算字段无法实现的计算处理 
・输入或更改字段值时更新合计值

另外,单选按钮上设置的“个”、“件”是指单个商品和内含12个的一整包,计算销售额的时候按这两种方式来计算。 

以下就是本次要做成的范例代码。

(function() {
    "use strict";
    var events = [
        'app.record.edit.change.单位',
        'app.record.edit.change.单价',
        'app.record.edit.change.个数',
        'app.record.create.change.单位',
        'app.record.create.change.单价',
        'app.record.create.change.个数'
    ];

    kintone.events.on(events, function(event) {



        // 获取"Table"的记录对象

        var table_row = event.changes.row;



        //对发生了change的行进行计算并将结果代入合计

        var radio = table_row.value['单位'].value;

        var price = table_row.value['单价'].value;

        var number = table_row.value['个数'].value;

        var total = table_row.value['合计'];

        //单位['个']

        if (radio === '个') {

            total.value = price * number;

        } else {

        //单位['件']

            total.value = price * number * 12;

        }



        return event;

    });

})();

确认动作

打开应用页面,在各项中输入值。 

00158ad23b3c6a1bdf9ad7cf14a2cf6

当“单价”和“个数”字段输入值后,“合计”字段就会显示计算结果。


接下来确认合计的值是否随着点选按钮的值发生变化

点选按钮的“单位”改为“件”试试看。

00158ad23c955f1433c1db580b961c3

可以发现合计的值已变化。
跟原想的设想一样,1件作为12个来进行计算。 

上面的页面是添加记录时的步骤,记录编辑页面时也一样,当“单价”在“数量”、“单位”发生更改时,合计值跟着变化。

另外、除了这些,还可以把“合计”字段设为不可编辑,以避免手动输入失误。

本Tips在2016年5月版中确认过。