2015-08-26 1 views
2

Как установить значение поля с помощью javascript (на клиенте)?Odoo 8: Установить значение поля клиента из javascript

В XML-файле с моей точки зрения, я бы:

<field name="zip" /> 
<field name="city" class="city" /> 

При изменении почтового индекса, я хочу, чтобы сделать поиск и город (я мог бы сделать это на стороне сервера с @api. onchange, но по соображениям производительности я предпочитаю клиентскую сторону).

Поиск работает, и я могу установить значение с:

$('span.city input').val(city); 

Это ставит город в поле ввода, но клиент не получает знать об изменении (например, у меня есть серверный метод обмена для обработки других полей, и этот метод не получает нового значения города).

Из чего я могу найти, я должен называть set_value (город) в поле, но как найти подходящий объект для вызова метода?

+0

пожалуйста, поделитесь кодом с, чтобы получить более подробную информацию и дать вам руку более должным образом. –

+0

Код довольно сложный (и длинный), но основной вопрос на самом деле очень прост: какой правильный способ установить значение поля из javascript? Я знаю, что будет много «от этого зависит», но любой намек или пример, который может приблизить меня к решению, приветствуется. – cgs

ответ

1

Пожалуйста, обратите внимание на модуль hr_timesheet_sheet в static/src/js/timesheet.js. Это даст вам четкое представление о том, как создать поле и дать ему значение.

+0

Спасибо за предложение. Думаю, я мог бы использовать field_manager.set_values ​​(...), но для этого нужен способ поиска объекта с помощью field_manager. Как можно найти объект с полезным полем_manager? – cgs

1

Я нашел решение. В моем почтовом виджете, я нахожу родительский и сохранить список полей:

openerp.zip_widget = function(instance) { 
    var _t = instance.web._t, 
     _lt = instance.web._lt; 
    var QWeb = instance.web.qweb; 
    var fields; // <-- Variable to keep the field list 

    instance.web.form.widgets.add('zip', 'instance.zip_widget.zip_lookup'); 
    instance.zip_widget.zip_lookup = instance.web.form.FieldChar.extend({ 
     template: "zip_widget", 
     start: function() { 
      this._super(); 
      fields = this.getParent().fields; // <-- Get the field list 
     }, 

Теперь я могу установить значение поля с fields.city.set_value(...);

 Смежные вопросы

  • Нет связанных вопросов^_^