第 8篇 挑战简单的更新处理

cybozu发表于:2016年10月19日 17:47:22更新于:2021年10月12日 14:33:45

概要

在这之前,已经在入门系列里面为大家介绍了以列表页面和详情页面为中心的,获取基本数据的方法。这次,我想尝试着来挑战下简单的更新处理!!o(*⌒O⌒)b加油!!

那么接下来,我们来试着用JavaScript自定义来实现那种使用kintone的计算字段也无法进行自动计算设置的计算吧(^^♪

  1. 通过商品单价和个数,算出合计金额

  2. 合计金额超过5000的,打9折

  3. 合计金额超过10000的,打8折

应用准备

事不宜迟,我们来准备这次使用的应用吧(*^_^*)

00158219a3468f28afc756c137927eb

字段名

字段类型

字段代码

备考

商品名

单行文本框

商品名

 -

单价

数值

单价

显示千位分隔符
设为必填项
值的限制:最小0
小数点后的显示位数:0
单位符号:元(单位放后面)

数量

数值

数量

设为必填项
值的限制:最小0
小数点后的显示位数:0

合计

数值

合计

显示千位分隔符
值的限制:最小0
小数点后的显示位数:0
单位符号:元(单位放后面)

Kintone的多个事件处理

在之前的例子里面,虽然还没有过介绍同个处理里包含多个事件的案例,但是这也并不是一件难事。kintone.events.on()的第一参数: 因为event 里可以用数组的形式指定多个事件类型,让我们试着使用下面两种事件(^^♪

(function() {
    "use strict";
    // 记录详请页面显示时的事件
    kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
        // 此处写需要处理的内容
    });
})();

简单吧(^^)

重写字段的值

文档上写着如下的内容:

00158217e00860d7b56dc459cf1f45f

尤其是,“最后的句柄不return的情况,将不更新字段的值”一定要记住哦φ( ̄ー ̄ )记下记下

更新处理

接下来就进入重点了(^^♪

(function() {
    "use strict";
    kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
        var record = event.record;
        var price = record['单价'].value;
        var number = record['数量'].value;
        // 算出合计金额
        var subTotal = price * number;
        // ¥10,000以上打8折
        if (subTotal >= 10000) {
            subTotal = subTotal / 100 * 80;
        // ¥5,000以上打9折
        } else if (subTotal >= 5000) {
            subTotal = subTotal / 100 * 90;
        }
        record['合计'].value = subTotal;
        return event;
    });
})();

00158219fdbaf6b29843b02b0d15ad6

是不是和预想的一样更新了呢?

关于其他的条件我们也来确认一下吧。

001582ebad6dfd1d54eb8f6f69efdfb

成功了呢\(*^▽^*)ノ

将合计字段设为不可编辑

这样,就可以计算出合计了!!
但是,就像kintone的计算字段不可编辑那样,大家肯定也想将合计字段设置为不可编辑吧(^^)
为此,Kintone已经为大家准备好了设置字段的可/不可编辑的API。真的是很贴心呢ヾ(●´∀`●)

接下来,就让我们试着将合计字段设置成不可编辑吧(^^♪

(function() {
    "use strict";
    kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
        var record = event.record;
        var price = record['单价'].value;
        var number = record['数量'].value;
        var subTotal = price * number;
        if (subTotal >= 10000) {
            subTotal = subTotal / 100 * 80;
        } else if (subTotal >= 5000) {
            subTotal = subTotal / 100 * 90;
        }
        record['合计'].value = subTotal;
        return event;
    });
    // 记录添加页面显示时,记录编辑页面显示时的事件
    kintone.events.on(['app.record.edit.show', 'app.record.create.show'], function(event) {
        // “合计”字段限制输入
        event.record['合计'].disabled = true;
        return event;
    });
})();

0015821a2dcccbbd372fc649aa7b2be

最后

这次我们尝试了使用记录更新相关的事件,来进行简单的更新处理。只不过,像这样使用的话,输入包含有小数点的值,以及进行消费税计算之类的时候,一定还有很多不足之处吧。另外,作成的事件,在验证kintone里的值的限制事项之前就已经被执行了。因此,需要再添加一个处理:输入数值以外的值时不进行计算。这样可能更实用些(^^)

还有,kintone里在列表页面上也可以编辑记录,这个范例没有考虑到列表页面上的编辑,所以大家在实际运用的时候也要对应下列表页面编辑时所做的限制哦(^^♪

请大家一定将这次学过的JavaScript作为参考,尝试着做做看哦ヾ(=´・∀・`=)
为了方便大家今后能够参考,向大家介绍下相关的一些Tips和范例,大家可以一起看看。

那么,就下次再见吧。

Let’s kintone customize\(^o^)/

该Tips在2014年9月版中进行过确认。

<< 第 7篇 使用自定义列表 | 第 9篇 使用REST API来添加记录 >>