更改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