记录添加事件

aki发表于:2016年09月15日 17:06:02更新于:2019年12月12日 12:47:50

Index

事件

可对event对象执行的操作

其他

事件


记录添加页面显示时的事件

  • 该事件可在PC专用版和智能手机专用版上使用。

  • 粘贴到空间的应用中不会发生此事件。

事件

环境事件事件发生时机
PC 专用版app.record.create.show
  • 显示记录添加页面或重复利用页面时

智能手机专用版mobile.app.record.create.show
  • 显示记录添加页面或重复利用页面时

event 对象的属性

PC专用版和智能手机专用版的内容相同。

属性名类型说明
appId数值应用ID
reuse布尔值重复利用时为 true。通常的添加页面为false。
record对象用于保存显示记录添加页面时的数据(表单的初始值)。
type字符串事件的类型。

可对event对象执行的操作

范例

显示记录添加页面时显示信息。

kintone.events.on('app.record.create.show', function(event) {
    alert("打开记录添加页面了");
});

记录添加页面在执行保存之前的事件

  • 可在PC专用版和智能手机专用版上使用的事件。

  • 粘帖到空间中的应用不可使用。

  • 可通过return false来取消保存处理。

  • 可像在字段中报错在记录中报错那样,在error属性中设置值,并return event对象来取消保存处理。

  • 使用return kintone.Promise对象的方法,可等待异步处理执行完成。

事件

环境事件事件发生的时机
PC专用版app.record.create.submit
  • 在记录添加页面或重复利用页面中点击保存按钮时

智能手机专用版

mobile.app.record.create.submit
  • 在记录添加页面或重复利用页面中点击保存按钮时

event 对象的属性

PC专用版和智能手机专用版的内容相同。

属性名类型说明
appId数值应用ID
record对象用于保存用户输入的数据。
type字符串事件的类型。

可对event对象执行的操作

等到异步处理执行完后再根据字段的值执行不同的处理

使用return kintone.Promise 对象的方法,可等待异步处理执行完后才开始根据字段的值执行不同的处理。

发生错误并废弃Thenable对象的情况,将中断事件处理。

使用kintone.Promise构造函数时
kintone.events.on('app.record.create.submit', function(event) {    
    var record = event.record;    
    var companyName = record['公司名称'].value;    
    // 确认企业管理中是否有公司名称    
    var masterAppId = 100;    
    var query = '公司名称="' + companyName + '"';    
    return new kintone.Promise(function(resolve, reject) {    
        var params = {app: masterAppId, query: query};    
        kintone.api('/k/v1/records', 'GET', params, function(resp){    
            resolve(resp);    
        });    
    }).then(function(resp) {    
        if (!resp.records.length) {    
            record['公司名称'].error = '在企业管理中不存在';    
        }    
        return event;    
    });    
});
使用可返回kintone.api的kintone.Promise对象时
    kintone.events.on('app.record.create.submit', function(event) {    
    var record = event.record;    
    var companyName = record['公司名称'].value|| '';    
    //确认企业管理中是否存在公司名称    
    var masterAppId = 100;    
    var query = '公司名称="' + companyName + '"';    
    var params = {app: masterAppId, query: query};    
    return kintone.api('/k/v1/records', 'GET', params).then(function(resp) {    
        if (!resp.records.length) {    
            record['公司名称'].error = '在企业管理中不存在';    
        }    
        return event;    
    });    
});

注意事项

请查看有关事件处理的一些注意事项

限制事项

在以下事件中无法获取附件字段的信息。

  • app.record.create.submit

  • mobile.app.record.create.submit

记录添加页面保存成功后的事件

该事件在记录添加页面或重复利用页面点击保存按钮,服务器保存成功后发生。

  • 可在PC专用版和智能手机专用版中使用。

  • 粘帖到空间中的应用不可使用。

  • 使用return kintone.Promise对象的方法,可等待异步处理执行完成。

  • 保存失败时不执行事件。

事件

环境事件事件发生时机
PC 专用版app.record.create.submit.success
  • 在记录添加页面或重复利用页面中点击保存按钮,服务器保存成功后

智能手机专用版mobile.app.record.create.submit.success
  • 在记录添加页面或重复利用页面中点击保存按钮,服务器保存成功后

event 对象的属性

属性名类型说明
appId数值应用ID
recordId数值记录ID
record对象用于保存用户输入的数据
type字符串事件的类型。

指定url属性

给event对象指定url属性,并return event时,事件处理后页面将跳转至所指定的URL。

url属性未指定、或指定为null时,跟往常一样跳转到记录详情页面。

例如,像下面这样写的话,保存成功后将跳转至[https://www.cybozu.cn/] 。

// 保存成功后将跳转至[https://www.cybozu.cn/] 。
kintone.events.on('app.record.create.submit.success', function(event) {
  event.url = "https://www.cybozu.cn/";
    console.log("url: " + event.url);
    return event;
});

可对event对象执行的操作

无。

范例

// 显示记录保存后发行的记录ID    
kintone.events.on("app.record.create.submit.success", function(ev){    
    var record = ev.record;    
    alert("记录ID: " + record["$id"]["value"] + " 已保存。");    
});

记录添加页面的字段值发生更改时的事件

  • 可在PC专用版和智能手机专用版上使用的事件。

  • 粘贴到空间的应用中不会发生此事件。

  • 作为触发器的值的更改不可取消。

事件

环境事件事件发生的时机
PC专用版app.record.create.change.<字段代码>
  • 在记录添加页面或重复利用页面,指定的字段的值被更改时、或表单的值被重写时

  • 执行应用时,在复制目标应用的记录添加页面中使用复制源值重写表单值时

智能手机专用版

mobile.app.record.create.change.<字段代码>
  • 在记录添加页面或重复利用页面,指定的字段的值被更改时、或表单的值被重写时

  • 执行应用时,在复制目标应用的记录添加页面中使用复制源值重写表单值时

字段代码中可指定的字段

仅当<字段代码>存在字段代码、且指定了以下类型的字段时,才会执行句柄。不存在字段代码或指定了以下类型以外的字段时,什么也不会发生。

  • 单选框

  • 下拉菜单

  • 复选框

  • 多选

  • 选择用户

  • 日期

  • 时间

  • 日期与时间

  • 单行文本框

  • 数值

  • 表格

※ 关于单行文本框和数值字段的事件发生的时机如下。 根据浏览器的不同,略有不同。

  • 控件失去焦点时

  • 通过Lookup复制值时

  • 单行文本框字段设置为【自动计算】的情况下,自动计算结果反映到字段中时(在记录列表页面上编辑时,自动计算处理本身无效,因此不包含在内)

※ 关于表格字段,事件发生时机如下。

  • 点击表格的添加行、删除行的按钮时

event 对象的属性

PC专用版和智能手机专用版的内容相同。

属性名类型说明
appId数值应用ID
record对象记用于保存事件发生时用户输入的数据
changes对象发生更改的对象
changes.field对象发生更改的字段的对象
changes.row对象发生更改的表格行的对象
  • 给表格添加行时:change.row 参照添加的行的对象。

  • 删除表格的行时:change.row 为 null。

  • 更改表格之外的字段时:change.row 为 null。

type字符串事件的类型。

可对event对象执行的操作

注意事项

请查看有关事件处理的一些注意事项

限制事项

在以下事件中无法获取附件字段的信息。

  • app.record.create.change.<字段代码>

  • mobile.app.record.create.change.<字段代码>

可对event对象执行的操作


重写字段的值

在句柄中record 对象中的字段值重写后,return event 对象时,将使用此值更新字段的值。

  • 可在PC专用版和智能手机专用版中使用。

  • 粘帖到空间中的应用不可使用。

  • 即使设为不可编辑字段,也可重写值。

  • 对无添加权限的字符的值进行重写时,不会应用到表单中。

  • 最后的句柄不return的情况,将不更新字段的值。

  • 添加多个句柄时,将以最后的句柄return回来的值为标准进行更新。

范例

打开记录添加页面时,给【文本框_0】字段、表格【Table】第一行的【文本框_1】字段设置初始值,并在表格的末尾添加行。
※如要添加表格的行,需要指定字段类型。适用于PC专用版和智能手机专用版。

kintone.events.on('app.record.create.show', function(event) {    
    var record = event.record;    
    record['文本框_0']['value'] = '用该字符串覆盖';    
    record['Table']['value'][0]['value']['文本框_1']['value'] = '覆盖表格的第一条记录';    
    //在表格的末尾添加行    
    var newRow = {    
        value: {    
            文本框_1: {    
                type: 'SINGLE_LINE_TEXT',    
                value: '添加到表格的行'    
            }    
        }    
    };    
    record['Table']['value'].push(newRow);    
    return event;    
});

无法重写的字段

以下字段即使使用句柄重写了字段的值并return,也不应用到表单中。

  • 记录编号

  • 创建人

  • 创建时间

  • 更新人

  • 更新时间

  • 状态

  • 执行者

  • 计算

  • 设置为自动计算的单行文本框

  • 附件

  • Lookup

  • Lookup的复制目标字段

设置字段的可/不可编辑

在句柄中对record对象的字段的disabled设置true/false,并return event 对象时,该字段将变成不可/可编辑。

  • 可在PC专用版和智能手机专用版中使用。

  • 粘帖到空间中的应用不可使用。

  • 即使将无编辑权限的字段设为可编辑(disabled 设为 false),此设置也不会生效。

范例

【下拉菜单_0】字段的值发生更改时,将【文本框_0】字段设为不可编辑。

kintone.events.on('app.record.create.change.下拉菜单_0', function(event) {    
    var record = event.record;    
    record['文本框_0']['disabled'] = true;    
    return event;    
});

无法设置可/不可编辑的字段

即使对以下字段的值设置可/不可编辑,并return,设置也不应用到表单。

  • 计算

  • 通过Lookup复制时的复制目标字段(仅限旧风格)

在字段中报错

在句柄中对record对象的字段的error设置了错误信息,并return event 对象时,将取消表单的值的重写和可/不可编辑的设置,对字段显示错误信息。

  • 可在PC专用版和智能手机专用版中使用。

  • 粘帖到空间中的应用不可使用。

  • 字段的error 设为null,并 return event对象时,可解除该字段的错误。

范例

在【文本框_0】字段和表格【Table】第一行的【文本框_1】字段中显示错误。

kintone.events.on('app.record.create.change.下拉菜单_0', function(event) {    
    var record = event.record;    
    record['文本框_0']['error'] = '显示此错误信息';    
    record['Table']['value'][0]['value']['文本框_1']['error'] = '表格第一条记录显示错误';    
    return event;    
});

以下字段即使设置了错误信息,也不会报错。

  • 记录编号

  • 创建人

  • 创建时间

  • 更新人

  • 更新时间

  • 状态

  • 执行者

在记录中报错

在句柄中给event 对象的error定义错误信息后,return event对象时,将取消字段值的重写以及可/不可编辑的设置,在页面顶部显示错误信息。

  • 可在PC专用版和智能手机专用版中使用。

  • 粘帖到空间中的应用不可使用。

kintone.events.on('app.record.create.change.下拉菜单_0', function(event) {    
    event.error = '错误!';    
    return event;    
});

自动获取Lookup

Lookup字段的lookup属性设置为true的情况下,给记录设置值时,将获取Lookup。

  • 可在PC专用版和智能手机专用版中使用。

  • 粘帖到空间中的应用不可使用。

范例

打开记录添加页面时,在【Lookup】字段中输入值并获取数据。

kintone.events.on('app.record.create.show', function(event) {    
    var record = event.record;    
    record['Lookup']['value'] = '0001'; // Lookup字段的值    
    record['Lookup']['lookup'] = true;    
    return event;    
});

清空Lookup复制目标字段的值

Lookup字段的lookup属性指定为 'CLEAR' 时,将清空复制目标字段(复制到字段)的值。

  • 可在PC专用版和智能手机专用版中使用。

  • 粘帖到空间中的应用不可使用。

范例

打开记录添加页面时,将清空“Lookup”字段的复制目标字段的值。

kintone.events.on('app.record.create.show', function(event) {    
    var record = event.record;    
    record['Lookup']['lookup'] = 'CLEAR';    
    return event;    
});

获取被更改的字段及表格内的行对象

获取表格内有发生变更的行的对象、以及表格外有发生变更的字段。

  • 可在PC专用版和智能手机专用版中使用。

  • 粘帖到空间中的应用不可使用。

  • 仅可在表格内的事件发生时获取row对象。

  • 删除表格内的行时,row对象为null 。

kintone.events.on('app.record.create.change.下拉菜单_0', function(event) {    
    var row = event.changes.row;    
    var field = event.changes.field;    
});

其他


相关Tips

回复(9)

  • betsy_yan

    你可以找到这个按钮的id或者class来触发,在这行下面添加一行并设置为禁止编辑。

    你可以使用:

    • append() - 在被选元素的结尾插入内容

    • after() - 在被选元素之后插入内容

    • disabled 属性可设置或返回是否禁用 checkbox。

    checkboxObject.disabled=true|false

    引用 closer 的回复:

    请问 table的“+” 怎么获取按钮的触发状态,设置新加一行的自段无法编辑。

  • cybozu

    没有table的加号按钮触发事件的api的。

    引用 closer 的回复:

    请问 table的“+” 怎么获取按钮的触发状态,设置新加一行的自段无法编辑。

  • closer

    请问 table的“+” 怎么获取按钮的触发状态,设置新加一行的自段无法编辑。

    引用 betsy_yan 的回复:

    论坛里有类似的问题,请参考https://cybozudev.kf5.com/hc/community/question/1016263/

  • cybozu

    在记录添加,编辑事件的时候可以判断下这个table的值是不是你认为的空,如果是的话可以重写这个table的值,将value直接设置为[]. 这样提交后的table是没有空行的

        "record": {
            "Table": {
                "type": "SUBTABLE",
                "value": [
                   
                ]
            }
        }

    重写字段的值:

    https://cybozudev.kf5.com/hc/kb/article/206878#step4

    引用 追梦人 的回复:

    我想请教一下,我在一个应用中,把几个字段 设置成了一个table, 我在进行保存操作时,当我在table中不输入内容,直接进行保存,保存成功以后,会有一个空行,我可以把这个空行删掉吗,如果没有在table中输入内容,就只显示表头,而不是显示一个空的行。如果可以的话,我应该如何来设置呢,谢谢。

  • betsy_yan

    论坛里有类似的问题,请参考

    https://cybozudev.kf5.com/hc/community/question/1016263/

    引用 追梦人 的回复:

    请问,应用中,几个字段合并的table ,当我编辑 或者 创建新内容的时候,table 后面 会有一个 '+' 和一个 '-'  的图标,我可以把这两个按钮设置成禁用吗?或者 隐藏掉吗   ,如果可以的话,我应该如何来设置呢?

  • 追梦人

    请问,应用中,几个字段合并的table ,当我编辑 或者 创建新内容的时候,table 后面 会有一个 '+' 和一个 '-'  的图标,我可以把这两个按钮设置成禁用吗?或者 隐藏掉吗   ,如果可以的话,我应该如何来设置呢?

  • 追梦人

    我想请教一下,我在一个应用中,把几个字段 设置成了一个table, 我在进行保存操作时,当我在table中不输入内容,直接进行保存,保存成功以后,会有一个空行,我可以把这个空行删掉吗,如果没有在table中输入内容,就只显示表头,而不是显示一个空的行。如果可以的话,我应该如何来设置呢,谢谢。

  • betsy_yan

    你是希望数据导入A-APP的同时post到B-APP吗?

    可以的,你可以使用promise的方式同时添加到2个APP中。

    还是问A-APP的数据能不能通过post的方式添加到B-APP?

    可以的,先get A-APP中给数据,然后再post到B-APP中。

    记得数据类型要与字段类型匹配哦,不然会出错。

    引用 closer 的回复:

    我想问下,那个我A-APP文件导入的数据能用post方法添加到B-APP吗?

  • closer
    我想问下,那个我A-APP文件导入的数据能用post方法添加到B-APP吗?


注意:贴代码时请注意格式并使用"代码语言",与本文无关的问题请至“讨论社区”提问。
您需要登录后才可以回复