PreventDefault 后恢复表单提交
Resume Form Submit after PreventDefault
我环顾四周,发现了许多类似的答案,但我的代码中的表单提交失败了。当单击 'submit' 按钮并使用 SweetAlert 确认时,似乎缺少或不正确的内容会阻止提交表单?
http://plnkr.co/edit/NL7r4E9UKVjGSBbAwt86?p=preview
<form id='submissionForm' autocomplete='off' method='POST'>
<button>Save</button>
<input type='submit' name='submit' id='submitTest1' value='Submit 1'>
<input type='submit' name='submit' id='submitTest2' value='Submit 2'>
</form>
单击 "Yes, I am sure" 然后 "Ok" 不会提交表单。
更新:
我简化了代码:http://plnkr.co/edit/A9aDycYhIkJcTmK5qIUS?p=preview
您的表单对象是一个普通的 javascript 对象,无法访问 jQuery 的提交方法。
将表单对象包装在 jQuery 包装器中 $(form).submit()
不确定 vanilla javascript 是否是必需的,因为我看到 jQuery 包含在 plnkr 中,但我使用 jQuery 的 submit()
方法进行了测试而不是 javascript 方法,它起作用了。
创建表单变量时,将 this
设为 jQuery 对象 var form = $(this);
在第二次提交之前使用removeEventListener
删除事件处理程序。
这是您更新后的 fiddle:http://plnkr.co/edit/lXUtzlMISxztGVvucFQS?p=preview
如答案中所述,您拥有名为 "submit" 的表单元素这一事实覆盖了 .submit()
方法。您应该避免在提交按钮中使用 "submit" 作为名称。改变它应该工作。
表单元素有一个名为 submit
的方法,但也有表单中的表单元素作为成员。
如果您有一个名为 submit
的 button
,您可以使用 document.form1.submit
访问它。但是,由于它与提交方法同名,因此无法再访问该方法。如果您使用该方法提交表单,将不再有效。
使用这个 plunker:
HTML:
<form id='submissionForm' autocomplete='off' method='POST'>
<button>Save</button>
<input type='submit' name='submit1' id='submitTest1' value='Submit 1'>
<input type='submit' name='submit2' id='submitTest2' value='Submit 2'>
</form>
我环顾四周,发现了许多类似的答案,但我的代码中的表单提交失败了。当单击 'submit' 按钮并使用 SweetAlert 确认时,似乎缺少或不正确的内容会阻止提交表单?
http://plnkr.co/edit/NL7r4E9UKVjGSBbAwt86?p=preview
<form id='submissionForm' autocomplete='off' method='POST'>
<button>Save</button>
<input type='submit' name='submit' id='submitTest1' value='Submit 1'>
<input type='submit' name='submit' id='submitTest2' value='Submit 2'>
</form>
单击 "Yes, I am sure" 然后 "Ok" 不会提交表单。
更新: 我简化了代码:http://plnkr.co/edit/A9aDycYhIkJcTmK5qIUS?p=preview
您的表单对象是一个普通的 javascript 对象,无法访问 jQuery 的提交方法。
将表单对象包装在 jQuery 包装器中 $(form).submit()
不确定 vanilla javascript 是否是必需的,因为我看到 jQuery 包含在 plnkr 中,但我使用 jQuery 的 submit()
方法进行了测试而不是 javascript 方法,它起作用了。
创建表单变量时,将 this
设为 jQuery 对象 var form = $(this);
在第二次提交之前使用removeEventListener
删除事件处理程序。
这是您更新后的 fiddle:http://plnkr.co/edit/lXUtzlMISxztGVvucFQS?p=preview
如答案中所述,您拥有名为 "submit" 的表单元素这一事实覆盖了 .submit()
方法。您应该避免在提交按钮中使用 "submit" 作为名称。改变它应该工作。
表单元素有一个名为 submit
的方法,但也有表单中的表单元素作为成员。
如果您有一个名为 submit
的 button
,您可以使用 document.form1.submit
访问它。但是,由于它与提交方法同名,因此无法再访问该方法。如果您使用该方法提交表单,将不再有效。
使用这个 plunker:
HTML:
<form id='submissionForm' autocomplete='off' method='POST'>
<button>Save</button>
<input type='submit' name='submit1' id='submitTest1' value='Submit 1'>
<input type='submit' name='submit2' id='submitTest2' value='Submit 2'>
</form>