我迄今已是基本的代碼:如何在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