创建一个具有自动填充逗号或点到浮点字段功能的小部件(Odoo 13)

Posted

技术标签:

【中文标题】创建一个具有自动填充逗号或点到浮点字段功能的小部件(Odoo 13)【英文标题】:Create a Widget with the function of auto populate commas or dots into float field (Odoo 13) 【发布时间】:2021-01-27 06:44:30 【问题描述】:

我正在尝试创建一个Widget,当用户通过js在float字段中输入值时,自动填充逗号或点的功能。

如果用户输入 123456789 ,它应该立即自动变为 12,345,667.89。

但在我的代码中,它只是在单击按钮后才起作用:

odoo.define('autofill.separate', function (require) 
"use strict";

var basic_fields = require('web.basic_fields');
var registry = require('web.field_registry');

var BoldWidget = basic_fields.FieldChar.extend(
    _renderReadonly: function () 
        this._super();
        var old_html_render = this.$el.html();
        var new_html_render = old_html_render.toString().replace(/\B(?=(\d3)+(?!\d))/g, ",")

        
        this.$el.html(new_html_render);
    ,
);

registry.add('autofill_separate', BoldWidget);
);

请帮忙!

谢谢!

【问题讨论】:

【参考方案1】:

你可以使用 jquery 掩码插件:

    将此添加到您的后端资产 https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.13.4/jquery.mask.min.js

    更新您的小部件:

     var basic_fields = require('web.basic_fields');
     var registry = require('web.field_registry');
    
     var BoldWidget = basic_fields.FieldMonetary.extend(
    
         _prepareInput: function ($input) 
             this._super.apply(this, arguments);
             this.$input.mask("#,##0.00", reverse: true);
             return this.$input;
         ,
    
     );
     registry.add('autofill_separate', BoldWidget);
    

【讨论】:

以上是关于创建一个具有自动填充逗号或点到浮点字段功能的小部件(Odoo 13)的主要内容,如果未能解决你的问题,请参考以下文章

Listview滚动到具有可变高度的小部件

Angularjs:Cloudinary 上传小部件中的预填充搜索字段

Jquery自动填充重复的表单字段

Django:管理员:在管理员中更改字段的小部件

如何在 spotify 应用程序 API 中创建类似“轮播”的小部件?

PyQt4 中理想的小部件是啥,我们可以在其中附加文本但在填充文本后无法编辑它?