选择是否为可编辑字段

cnDevNet发表于:2016年11月03日 10:53:06更新于:2022年07月27日 10:41:25

开发者中心包含此范例模板(选择是否为可编辑字段),请前往开发者中心下载学习。

概要

在实际运用时,可能存在这样的情况:每个部门申请时需要填写的内容都不太一样,但为了统一管理只准备一份申请表。
因此,有些同事可能会因为误操作在不需要填的地方填了内容。

这次就为大家介绍如何解决这个烦恼。通过自定义来实现根据不同的情况勾选字段是否可编辑,就可满足不同部门不同情况的需要了。勾选不需要的项目时就不必填写了。

※掌握了这个自定义技巧,可以应用于很多情况哦。比如,根据选择的部门自动灰掉所有不需要的字段,这样可以引导用户正确填写。可用于申请表,调查问卷等。请大家掌握了自己挑战一下吧。

实现效果

0015819b8b7c5a9a50b771d16814e69

当勾选类型中任何项目类型后,相对应的字段变成灰色不可编辑(初始状态都默认为可编辑状态)

实现的方法

1.准备需要的字段

字段名称字段类型字段代码项目名称
类型复选框type单行文本框
下拉菜单
日期
选择用户
单行文本框单行文本框string
下拉菜单下拉菜单dropdown
日期日期date
选择用户选择用户selectuser

2.实现功能代码

(function() {
    "use strict";
    function checkType(event) {
        // 定义记录的事件
        var record = event.record;
        // 定义字段值
        var field = {'单行文本框': "string", '下拉菜单': "dropdown", '日期': "date", '选择用户': "selectuser"};
        // 将字段的编辑状态设置为可编辑(true:不可编辑,false:可编辑)
        for (var i in field) {
            record[field[i]]['disabled'] = false;
        }
        // 类型值的循环
        for (var j in record['type']['value']) {
            var fieldType = record['type']['value'][j];
            // 判断类型值
            switch (fieldType) {
                // 类型的值为"单行文本框"时,将单行文本框的字段状态设定为不可编辑
                case '单行文本框':
                    record['string']['disabled'] = true;
                    break;
                // 类型的值为"下拉菜单"时,将下拉菜单的字段状态设定为不可编辑
                case '下拉菜单':
                    record['dropdown']['disabled'] = true;
                    break;
                // 类型的值为"日期"时,将日期的字段状态设定为不可编辑
                case '日期':
                    record['date']['disabled'] = true;
                    break;
                // 类型的值为"选择用户"时,将选择用户的字段状态设定为不可编辑
                case '选择用户':
                    record['selectuser']['disabled'] = true;
                    break;
            }
        }
        // 必须要 return 事件
        return event;
    }
    // 在编辑记录,编辑一览的记录的情况,发生事件
    kintone.events.on(['app.record.edit.show', 'app.record.index.edit.show'], checkType);
    // 在创建记录,编辑记录,编辑一览的记录的情况,改变类型的值时,发生事件
    kintone.events.on(['app.record.create.change.type', 'app.record.edit.change.type',
    'app.record.index.edit.change.type'], checkType);
    // 在创建记录,编辑记录,编辑一览的记录的情况,保存记录时,发生事件
    kintone.events.on(['app.record.create.submit', 'app.record.edit.submit',
    'app.record.index.edit.submit'], checkType);
})();