问题描述
大多数加载项都是不错的,但是每当我按Enter键时(我认为这是提交表单(例如登录表单)的最常用方法),但是所有操作都是空白.
The majority of the Add-on is good but whenever I hit enter (which is, in my opinion, the most common way to submit a form, for example, a login form), but all it does is blank out.
我已经尝试将脚本与).
Hitting enter key results in form submission (which is explicitly forbidden in Apps Script due to its client-to-server communication implementation).
解决方案1-单独处理输入
如果键为enter,则将preventDefault()添加到keydown事件(不建议使用btw,keypress事件,请参见引用在MDN上,请使用keydown/keyup):
Add preventDefault() to a keydown event if key is enter (btw, keypress event is deprecated, see reference on MDN, use the keydown / keyup instead):
var ENTER_CODE = 13; function handle(e) { if(e.keyCode === ENTER_CODE) { e.preventDefault(); document.getElementById('submitbuttcontainer').click(); } }
解决方案2-处理表单提交
您可以改为监听表单上的submit事件,并调用preventDefault()作为事件处理程序中的唯一语句,或者如果您希望表单按enter按键提交,则可以同时处理表单提交:
You can listen for a submit event on your form instead and invoke preventDefault() as the only statement in event handler or handle form submission at the same time if you expect form to be submitted on enter key hit:
//assumption: form is initiated elsewhere in code; form.addEventListener('submit', (event) => { event.preventDefault(); //handle submission; });
您还可以阻止提交所有表单以使设置更加灵活:
You can also prevent all forms from being submitted to make the setup flexible:
(() => { const { forms } = document; Object.values(forms).forEach( form => form.addEventListener("submit", (e) => e.preventDefault()) ); })();
建议
请使用addEventListener而不是on[event name here]属性.这种方式更加灵活,并具有简洁明了且易于他人阅读的优点.
Please, use addEventListener instead of on[event name here] attributes. This way is much more flexible and has the benefit of being concise and easy for others to read.
参考
- Handling forms in Apps Script guide
- Why use addEventListener? MDN reference
这篇关于为什么在按Enter键时我的脚本冻结了?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!