更改Editable Form里的快捷键(更新v 7.0)
- 
经常听到用户在抱怨OE的回车不好用。原来国产的很多软件里,总是把回车当成TAB用。唉。迎合用户,改。 
 打开:
 \addons\web\static\src\js\view_list_editable.js
 找到(大约line169):<br />on_row_keyup: function (e) {<br />            var self = this;<br />......<br />
 动手。
 首先要支持这个:用户在一个输入框回车,跳转到本行的下一个输入框。要考虑输入框的readonly,invisible...
 思路:先数本行总共有多少个可以输入的input, 然后向后select一个。<br /><br />on_row_keyup: function (e) {<br />            var self = this;<br />            <br />            switch (e.which) {<br />            case KEY_RETURN:<br />                inputs = self.edition_form.$element.find('input:visible:not(disabled):not([readonly])')<br />                idx = $.inArray(e.target, inputs);<br />                if(idx < inputs.length-1){<br />                    $('#'+inputs[idx+1].id).select();<br />                    return;<br />                }<br />                <br />                this.save_row().then(function (result) {<br />                    if (result.created) {<br />                        self.new_record();<br />                        return;<br />                    }<br /><br />......<br /><br />
 当然,如果到了本行最后一个输入框了,那就执行系统的快捷键,保存本行,跳到下一行吧。
 打完收工。
 以下是为7.0做的改变。
 为了维持用户体验,我还是需要把v7版本的回车快捷键修改一下,使之和v 6.1中一致:
 还是那个文件,line 489,
 (BTW:这个版本支持很多的快捷键,确实提高了用户体验。)
 我们主要修改keyup_ENTER方法:<br /><br />keyup_ENTER: function (e) {<br />            //return this._next();<br />            var form = this.editor.form;<br />            //找最后一个field<br />            var last_field = _(form.fields_order).chain()<br />                .map(function (name) { return form.fields[name]; })<br />                .filter(function (field) { return field.$el.is(':visible'); })<br />                .last()<br />                .value();<br />            // tabbed from last field in form<br />            判断是否换行<br />            if (last_field && last_field.$el.has(e.target).length) {<br />                e.preventDefault();<br />                return this._next();<br />            }else{<br />                //如果不需要换行,转向下一个输入框。<br />                var source_field = $(e.target).closest('[data-fieldname]')<br />                    .attr('data-fieldname');<br /><br />                var fields_order = form.fields_order;<br />                var field_index = _(fields_order).indexOf(source_field);<br /><br />                var fields = form.fields;<br />                var field;<br />                do {<br />                    if (++field_index >= fields_order.length) { return $.when(); }<br /><br />                    field = fields[fields_order[field_index]];<br />                } while (!field.$el.is(':visible'));<br /><br />                field.focus();<br />            }<br />            return $.when();<br />            <br />        },<br />
- 
这个牛B 

