Odoo 14:字符字段按下回车键触发函数的实现方法
在Odoo 14中实现字符字段回车触发指定函数的方案
实现思路
可以通过扩展Odoo的前端字段组件,为目标字符字段绑定回车键按下事件,在事件回调中调用后端customer.status.search模型的get_details方法,最后处理返回的窗口动作完成页面跳转。
JavaScript 实现代码
在自定义模块的static/src/js目录下创建custom_char_field.js文件,内容如下:
odoo.define('your_module.custom_char_field', function (require) { "use strict"; var basic_fields = require('web.basic_fields'); var field_registry = require('web.field_registry'); // 继承原生字符字段组件 var CustomCharField = basic_fields.CharField.extend({ start: function () { this._super.apply(this, arguments); var self = this; // 为输入框绑定回车事件 this.$input.on('keydown', function (e) { if (e.keyCode === 13) { e.preventDefault(); // 阻止默认回车行为(如表单提交) // 调用后端方法 self._rpc({ model: 'customer.status.search', method: 'get_details', args: [], // 如需传递字段值,可改为 [self.value] context: self.context, }).then(function (action) { // 执行返回的窗口动作 if (action) { self.do_action(action); } }); } }); }, }); // 注册自定义组件,供视图调用 field_registry.add('custom_char_trigger', CustomCharField); return CustomCharField; });
配置与使用步骤
- 在模块的
__manifest__.py中引入该JS文件:
'assets': { 'web.assets_backend': [ 'your_module/static/src/js/custom_char_field.js', ], },
(将your_module替换为实际模块名称)
- 在视图XML中为目标字符字段指定使用自定义组件:
<field name="target_char_field" widget="custom_char_trigger"/>
注意事项
- 确保当前用户拥有
customer.status.search模型的调用权限,否则会触发权限错误。 - 如果需要将字段输入值传递给后端
get_details方法,可修改JS中_rpc的args参数为[self.value],同时调整Python方法接收参数。
内容的提问来源于stack exchange,提问作者user17707295
相关产品推荐
相关产品推荐

