开发者中心包含此范例模板(获取发生了更改的行并自动更新合计),请前往开发者中心下载学习。
概要
本次介绍2016年5月升级时新增的使用记录编辑事件“获取发生了更改的字段及表格内的行对象”。
在升级前,如果要获取发生了更改的表格内的行对象或表格外的对象,需要把更改前的信息保存在另外的数组中,然后拿当前的字段信息与之比较,找出发生了更改的地方。
更新后,可以只查找发生了更改的行的值,使用简单的代码就可以完成处理。
准备应用
本次做一个可以统计销售额的应用,按一下单选按钮即可更改统计结果。添加的字段如下。
字段类型 | 字段名称 | 字段代码 | 备注 |
---|---|---|---|
表格 | 表格 | 表格 | 本范例里勾选“隐藏表格名称” |
日期 | 日期 | 日期 | |
数值 | 单价 | 单价 | |
数值 | 个数 | 个数 | |
单选按钮 | 单位 | 单位 | 选项: • 个 • 件 |
数值 | 合计 | 合计 |
把表格字段拖到表单后,分别将“日期”、“单价”、“个数”、“单选按钮”、“合计”字段添加到表格。
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; }); })();
确认动作
打开应用页面,在各项中输入值。
当“单价”和“个数”字段输入值后,“合计”字段就会显示计算结果。
接下来确认合计的值是否随着点选按钮的值发生变化
点选按钮的“单位”改为“件”试试看。
可以发现合计的值已变化。
跟原想的设想一样,1件作为12个来进行计算。
上面的页面是添加记录时的步骤,记录编辑页面时也一样,当“单价”在“数量”、“单位”发生更改时,合计值跟着变化。
另外、除了这些,还可以把“合计”字段设为不可编辑,以避免手动输入失误。
本Tips在2016年5月版中确认过。