Slate第三方脚本:实现表单自动提交的技术求助
Slate表单自动提交脚本改造问题及解决方案
需求说明
我正在为Slate开发第三方JS脚本,需要将原手动提交逻辑改为自动触发提交,无需用户点击提交按钮。疑问点:form.on('submit', function()是否为点击事件,希望将FW.Lazy.Commit(this, { cmd: 'submit' });整合进自动提交逻辑中实现功能。
手动提交生效代码
<script async="async"> /*<![CDATA[*/ $( document ).ready(function() { var form = $('#myForm'); form.on('submit', function() FW.Lazy.Commit(this, { cmd: 'submit' }); ); })(FW.$); /*]]>*/ </script>
表单HTML结构
<form id="myForm"...> <button class="default form_button_submit" id="mySubmit" type="button">Submit</button> </form>
尝试无效的代码
<script async="async"> /*<![CDATA[*/ $( document ).ready(function() { $('#myForm').submit(function() FW.Lazy.Commit(this, { cmd: 'submit' } ); ); })(FW.$); /*]]>*/ </script>
问题分析与解决方案
核心问题点
form.on('submit', function(){...})不是点击事件,它是表单提交事件的监听器,当表单通过点击type="submit"按钮、JS调用submit()方法等方式触发提交时,才会执行内部逻辑。- 你尝试的代码中,
$('#myForm').submit(function(){...})本质还是在绑定提交事件监听器,并没有触发实际的提交操作。
正确实现代码
要实现自动提交,需要先保留原有的提交事件监听器(确保FW.Lazy.Commit逻辑被执行),再调用无参数的submit()方法触发表单提交:
<script async="async"> /*<![CDATA[*/ $( document ).ready(function() { var form = $('#myForm'); // 绑定表单提交事件监听器,和原手动逻辑一致 form.on('submit', function() { FW.Lazy.Commit(this, { cmd: 'submit' }); }); // 自动触发表单提交 form.submit(); })(FW.$); /*]]>*/ </script>
补充说明
如果不需要保留提交事件监听器(比如只想直接执行提交逻辑),也可以直接调用FW.Lazy.Commit,但需确保this指向表单元素:
<script async="async"> /*<![CDATA[*/ $( document ).ready(function() { var form = $('#myForm')[0]; // 获取原生DOM元素 FW.Lazy.Commit(form, { cmd: 'submit' }); })(FW.$); /*]]>*/ </script>
内容的提问来源于stack exchange,提问作者Jack L
相关产品推荐
相关产品推荐

