diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index c5a2fbb4dc6..aa19916c260 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -273,6 +273,10 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# if (field in argument_replacement) { return argument_replacement[field](i); } + // literal number + if (/^-?\d+(\.\d+)?$/.test(field)) { + return Number(field); + } // form field if (self.fields[field]) { var value = self.fields[field].get_on_change_value(); diff --git a/addons/web/static/test/onchange.js b/addons/web/static/test/onchange.js index 9f047f33d93..8074c755bd3 100644 --- a/addons/web/static/test/onchange.js +++ b/addons/web/static/test/onchange.js @@ -62,4 +62,13 @@ $(document).ready(function () { var result2 = f.parse_on_change("on_str('foo')", {}); deepEqual(result2.args, ['foo']); }); + test('Literal number', function () { + var f = make_form(); + var result = f.parse_on_change('on_str(42)', {}); + deepEqual(result.args, [42]); + var result2 = f.parse_on_change("on_str(-25)", {}); + deepEqual(result2.args, [-25]); + var result3 = f.parse_on_change("on_str(25.02)", {}); + deepEqual(result3.args, [25.02]); + }); });