我有一个表单,当提交时,我需要在提交表单之前做一些额外的处理。我可以阻止默认的表单提交行为,然后进行我的额外处理(它基本上是调用 Google Maps API 并向表单添加一些隐藏字段)——然后我需要提交表单。
有没有办法“防止默认”,然后在某个时间点“继续默认”?
我有一个表单,当提交时,我需要在提交表单之前做一些额外的处理。我可以阻止默认的表单提交行为,然后进行我的额外处理(它基本上是调用 Google Maps API 并向表单添加一些隐藏字段)——然后我需要提交表单。
有没有办法“防止默认”,然后在某个时间点“继续默认”?
利用 jQuery.one()
将处理程序附加到元素的事件。每个事件类型的每个元素最多执行一次处理程序
$('form').one('submit', function(e) {
e.preventDefault();
// do your things ...
// and when you done:
$(this).submit();
});
使用one
prevent 也是无限循环,因为这个自定义submit
事件在第一次提交后被分离。
我只会做:
$('#submiteButtonID').click(function(e){
e.preventDefault();
//do your stuff.
$('#formId').submit();
});
如果您只需要提交表单preventDefault
,请先调用 ,然后使用submit()
函数
使用这种方式你将在你的 JS 上做一个无限循环。要做得更好,您可以使用以下方法
var on_submit_function = function(evt){
evt.preventDefault(); //The form wouln't be submitted Yet.
(...yourcode...)
$(this).off('submit', on_submit_function); //It will remove this handle and will submit the form again if it's all ok.
$(this).submit();
}
$('form').on('submit', on_submit_function); //Registering on submit.
我希望它有帮助!谢谢!
$('#myform').on('submit',function(event){
// block form submit event
event.preventDefault();
// Do some stuff here
...
// Continue the form submit
event.currentTarget.submit();
});