代码之家  ›  专栏  ›  技术社区  ›  forvas

如何聚焦在奥多的瞬变模型形式的场?

  •  2
  • forvas  · 技术社区  · 6 年前

    我刚刚意识到 default_focus="1" 不适用于瞬态模型视图中的字段(至少使用打开的字段 target="new" )和 autofocus="autofocus" ,我认为它只能用于 buttons pages ,适用于这些瞬态模型字段,但仅在第一次打开视图时有效。除非重新加载浏览器,否则它将不再工作。

    在我的例子中,我为 Char 字段(在瞬态模型中),每次打开弹出窗口时,我都需要将此字段聚焦。因为我不能用XML来实现,所以我尝试用JavaScript来实现。

    这是我的小部件的XML模板,它继承自 FieldChar :

    <t t-name="FieldRed" t-extend="FieldChar">
        <t t-jquery="input" t-operation="attributes">
            <attribute name="id">barcode_input</attribute>
            <attribute name="class">o_form_input bg-red</attribute>
        </t>
    </t>
    

    现在,我的小部件的JS代码。我正试着集中注意力 start 方法,因为是在呈现之后执行的第一个方法:

    start: function() {
        console.log('START');
        this._super.apply(this, arguments);
        this.$el.parent().find('input').focus();
    },
    

    但这不起作用。我也尝试过:

    this.setupFocus(this.$el.parent().find('input'));
    

    但什么也没发生。但是,如果我包括这一行,例如,字段将自动填充,如预期的那样:

    this.$el.parent().find('input').val('START');
    

    所以我的问题是:

    我怎样才能集中注意力 input 每次打开窗体时控件的字段?

    2 回复  |  直到 6 年前
        1
  •  0
  •   forvas    6 年前

    最后,我找到了一个简单的解决方法。我只是等了50毫秒才打电话给 focus setTimeout . 我想焦点会被奥多核心自动转移到某个地方 start 如果我等待动作结束,然后把焦点移到我想要的地方,它就会工作。不过,这不是我喜欢的解决方案,但目前我只有这一个:

    start: function() {
        this._super.apply(this, arguments);
        self = this;
        setTimeout(function(){
            self.$el.parent().find('input').focus();
        }, 50);
    },
    
        2
  •  0
  •   Shreeram    6 年前

    我用一个简单的jquery完成了它。

    我在字段中添加了一个类,并在弹出窗口中编写脚本以供查看。

    就像下面一样。

    <form string="Stock Disposal">
                    <sheet>
                        <script>
                            $('.my-focus-field').focus()
    
                        </script>
    
                        <div class="oe_title">
                            <h1>
                                Stock Disposal
                            </h1>
                        </div>
                        <group>
                            <field name="serial_number" class="my-focus-field"/>
                        </group>
                    </sheet>
                </form>
    

    如果走错了,请告诉我。