You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在树形视图点击“新增”按钮时自动聚焦指定字段?

解决Odoo one2many树形视图新增行默认聚焦第二个字段的问题

Odoo原生没有提供直接的XML参数或属性来控制可编辑树形视图新增行后的默认聚焦字段,需要通过自定义JavaScript代码实现需求。

实现步骤:

  1. 给树形视图添加自定义类
    修改你的树形视图XML代码,新增一个自定义类(比如focus-second-field)来标识需要处理的视图:

    <tree editable="bottom" class="check_class focus-second-field">
        <field name="check" class="oe_edit_only" string="&amp;#160;"/>
        <field name="description" decoration-crossed="check == True" string="Чек лист"/>
    </tree>
    
  2. 编写自定义JS逻辑
    在模块的static/src/js/目录下创建一个JS文件(比如focus_custom.js),重写列表控制器的_renderEdit方法,监听新增行事件并聚焦到第二个字段:

    odoo.define('your_module.focus_custom', function(require) {
        "use strict";
    
        var ListController = require('web.ListController');
        var ListView = require('web.ListView');
        var viewRegistry = require('web.view_registry');
    
        var CustomListController = ListController.extend({
            _renderEdit: function () {
                this._super.apply(this, arguments);
                if (this.$el.hasClass('focus-second-field')) {
                    // 定位到新增行的第二个字段输入框
                    var $newRow = this.$('.o_list_view .o_data_row:last');
                    var $targetField = $newRow.find('.o_field_widget:eq(1) input');
                    if ($targetField.length) {
                        // 延迟执行确保DOM已渲染完成
                        setTimeout(() => $targetField.focus(), 100);
                    }
                }
            },
        });
    
        var CustomListView = ListView.extend({
            config: _.extend({}, ListView.prototype.config, {
                Controller: CustomListController,
            }),
        });
    
        viewRegistry.add('focus_second_field_tree', CustomListView);
    });
    
  3. 在模块清单中加载JS文件
    修改模块的__manifest__.py,将上述JS文件添加到后端资源中:

    {
        # 其他清单配置...
        'assets': {
            'web.assets_backend': [
                'your_module/static/src/js/focus_custom.js',
            ],
        },
    }
    

注意事项

  • 替换代码中的your_module为你实际的模块名称
  • 若视图结构有调整,需要修改JS中的选择器(比如.o_field_widget:eq(1))确保精准定位到目标字段

内容的提问来源于stack exchange,提问作者Wald Sin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:20:30