您可以定义一个新的Char 字段来处理Enter 键事件。
例子:
odoo.define('Module_Name.FieldChar', function (require) {
"use strict";
var FieldChar = require('web.basic_fields').FieldChar;
var registry = require('web.field_registry');
var FieldCharCustom = FieldChar.extend({
_onKeydown: function (ev) {
if (ev.which === $.ui.keyCode.ENTER) {
// this._someFunction();
}
this._super.apply(this, arguments);
},
});
registry.add('char_custom', FieldCharCustom);
});
加载js文件,继承web.assets_backed:
<template id="assets_backend" inherit_id="web.assets_backend" name="assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/Module_Name/static/src/js/field_char.js"></script>
</xpath>
</template>
然后您只需在视图拱门中设置 char 字段的 widget 属性:
<field name="name" widget="char_custom"/>
更新
您可以使用this.rpc 在customer.status.search 模型上调用get_details,就像他们在单击按钮以验证inventory 时所做的那样
例子:
this._rpc({
model: 'customer.status.search',
method: 'get_details',
args: [record_id]
}).then(function (res) {
});
您可以在 init 方法中找到一个示例,说明他们如何从上下文中获取库存 ID
编辑:
当您第一次单击自定义字符字段时,向导记录 ID 将不可用,并且您无法调用 get_details 函数,因为它依赖于 self。 get_details 函数只返回一个动作(打开合作伙伴表单),这也可以使用 js 代码执行,只需调用 this.do_action 执行窗口动作。
如果您使用它来搜索特定合作伙伴,则字段值将在 this.recordData 变量中可用。
如果您在保存前尝试打开合作伙伴表单,Odoo 将显示以下警告:
The record has been modified, your changes will be discarded. Do you want to proceed?
为避免这种情况,您可以使用以下方法模拟单击保存按钮:
$(".o_form_button_save").click();
例子:
odoo.define('MODULE_NAME.FieldChar', function (require) {
"use strict";
var core = require('web.core');
var _t = core._t;
var FieldChar = require('web.basic_fields').FieldChar;
var registry = require('web.field_registry');
var FieldCharCustom = FieldChar.extend({
_onKeydown: function (ev) {
this._super.apply(this, arguments);
if (ev.which === $.ui.keyCode.ENTER) {
var self = this;
var customer_id = 14;
$(".o_form_button_save").click();
this._rpc({
model: 'ir.model.data',
method: 'xmlid_to_res_model_res_id',
args: ["base.view_partner_form"],
}).then(function (data) {
self.do_action(
{
name: _t('Customer Status'),
type: 'ir.actions.act_window',
view_mode: 'tree,form',
res_model: 'res.partner',
target: 'current',
res_id: customer_id,
views: [[data[1], 'form'], [false, 'list']],
});
});
}
},
});
registry.add('char_custom', FieldCharCustom);
});