创建一个具有将逗号或点自动填充到浮点字段功能的小部件 (Odoo 13)
Create a Widget with the function of auto populate commas or dots into float field (Odoo 13)
我正在尝试创建一个 Widget,它具有当用户通过 js 将值输入到浮点字段时自动填充逗号或点的功能。
如果用户输入 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);
});
请帮忙!
谢谢!
你可以使用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);
我正在尝试创建一个 Widget,它具有当用户通过 js 将值输入到浮点字段时自动填充逗号或点的功能。
如果用户输入 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);
});
请帮忙!
谢谢!
你可以使用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);