Odoo 10中如何阻止按回车键提交表单?
问题分析与解决方案
嘿,我一眼就揪出问题所在啦——你现在监听的是按钮的click事件,但click事件的事件对象里根本没有keyCode属性,这就是你打印e.keyCode得到undefined的核心原因!
你的需求是阻止用户按回车键提交表单,正确思路应该是监听表单或输入框的键盘事件(比如keydown),而不是按钮的点击事件,因为浏览器默认会在表单内按下回车时触发提交行为,不一定需要点击提交按钮。
这里给你调整后的可用代码:
snippet_animation.registry.form_builder_send.include({ start: function(editable_mode){ var self = this; // 找到当前表单,监听键盘按下事件 this.$target.closest('form').on('keydown', function(e) { // 用e.key判断更符合现代标准,兼容性比keyCode更好 if (e.key === 'Enter') { e.preventDefault(); // 阻止回车提交的浏览器默认行为 console.log('回车键已被拦截,表单不会提交'); } }); // 保留按钮点击的正常提交逻辑 this.$target.find('.o_website_form_send').on('click',function(e) { self.send(e); }); this._super(editable_mode); }, })
关键调整说明:
- 把监听对象从按钮
click事件改成了表单的keydown事件,能捕获表单内所有输入框的回车键操作 - 用
e.key === 'Enter'替代keyCode,keyCode已被标记为废弃,e.key是更规范的写法 - 拆分了键盘拦截和按钮提交逻辑,确保点击按钮时依然能正常触发表单提交
这样就能完美实现「阻止回车提交,保留点击提交」的需求啦!
内容的提问来源于stack exchange,提问作者KbiR
相关产品推荐
相关产品推荐

