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

问题描述

当用户通过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(?=(\d{3})+(?!\d))/g, ",")

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

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

请帮忙!

谢谢!

标签: javascriptstringwidgetautofillodoo-13

解决方案


您可以使用 jquery 掩码插件:

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

  2. 更新您的小部件:

     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);
    

推荐阅读