我迄今已是基本的代码:如何在Odoo JavaScript中打开某些表单视图并更改其字段?
odoo.define('partner_data.res_partner_widget', function(require) {
"use strict";
var core = require('web.core');
var Dialog = require('web.Dialog');
var form_common = require('web.form_common');
var Widget = require('web.Widget');
var Model = require('web.Model');
var _t = core._t;
var QWeb = core.qweb;
console.log('JS loaded');
$(document).on('ready', function() {
console.log('Doc is ready');
$('#FIELD').on('change', function() {
// Change value of other fields in this form
});
});
});
问题是整个ODOO系统文件准备好触发器。并试图通过其名称$(#fieldname)
找到该字段根本不起作用。
对于这个问题,是否有解决ODOO的具体问题?或者,也许你知道非常好的文档或例子,解释ODOO FIELD的变化方法。附:我写了ODOO,因为每个人都回答简单的JQuery风格,这不仅仅是简单的JQuery,它必须是更具体的与ODOO相关的东西。 或者,也许我可以在字段更改后调用特定窗体视图的Python函数,类似的东西。我发现的所有odoo文档都只提供很少或根本没有关于此的信息。
UPDATE:
感谢@Vishal Khichadiya我有点接近。我通过创建一个小部件来编辑他的答案。现在,当我将这个小部件设置为随机场时,让我们对一些不可见的字段说一下,我可以在任何我想要的字段上使用class class_partner,它将触发onchange
方法。
odoo.define('partner_data.res_partner_widget', function(require) {
"use strict";
var base = require('web_editor.base');
var options = require('web_editor.snippets.options');
var core = require('web.core');
var Dialog = require('web.Dialog');
var session = require('web.session');
var form_common = require('web.form_common');
var Widget = require('web.Widget');
var Model = require('web.Model');
var _t = core._t;
var QWeb = core.qweb;
var onchange_js_method_test = form_common.AbstractField.extend({
start: function() {
this._super();
var self = this;
$('body').on('change', '.class_partner', function() {
console.log('start triggered');
console.log(self)
// Change value of other fields in this form
//you can call python function from here to set your value
});
}
});
core.form_widget_registry.add('onchange_js_method_test', onchange_js_method_test);
});
XML:
<field name="random_invisible" " widget="onchange_js_method_test"/>
<field name="on_this_field_onchange_triggers" class="class_partner"/>
您应该将java标记更改为javascript。尽管他们的名字是他们不相关的编程语言。 –
你为什么试图在那里发起一个onchange事件(JS)?你的目标是什么? – CZoellner
每当#FIELD值发生变化时,我需要更改其他字段的值,并且如果您希望建议我使用Python来做到这一点,否则它不会工作。 – enigmq