form.on('submit') 不会在 form.submit() 之前触发
form.on('submit') does not trigger after form.submit() but before
我有一个表单提交触发器和一个确认引导框,它显示在单击表单提交按钮上。在 bootbox 中确认如果用户同意我提交表单。我的问题是 onsubmit 在用户说是之前触发,并且当我在 bootbox 中调用 form.submit()
时不再触发。
<html>
<form>
<!-- something here -->
<button type="submit"></button>
</form>
</html>
<script>
form.on('submit', function(){
//do something here (I)
}
form.validate({
submitHandler: function (form) {
finalConfirm(form); (II)
}
});
function finalConfirm(form){
confirm('message', function (confirmed) {
if(confirmed) form.submit() (III)
})
}
</script>
我希望 //do something here (I)
在 if(confirmed) form.submit() (III)
之后执行,或者至少在之前和之后执行,但它只在它之前执行(如我在代码中所示)
在 form
元素(DOM 元素,而不是 jQuery 包装器)上直接 调用 submit
不会触发 submit
个处理程序。验证插件传递你的 submitHandler
的参数是 DOM 元素,而不是它的 jQuery 包装器(根据 this documentation)。
在 form
元素的 jQuery 包装器上调用 submit
会 触发 submit
处理程序(至少,附有 jQuery 的)。因此,如果您希望 finalConfirm
中的 form.submit()
触发您的提交处理程序,请为其创建一个 jQuery 包装器:
$(form).submit();
(在那里,或在 submitHandler
将其传递给 finalConfirm
之前。)
只要确保您不会陷入无限循环即可。 :-)
我有一个表单提交触发器和一个确认引导框,它显示在单击表单提交按钮上。在 bootbox 中确认如果用户同意我提交表单。我的问题是 onsubmit 在用户说是之前触发,并且当我在 bootbox 中调用 form.submit()
时不再触发。
<html>
<form>
<!-- something here -->
<button type="submit"></button>
</form>
</html>
<script>
form.on('submit', function(){
//do something here (I)
}
form.validate({
submitHandler: function (form) {
finalConfirm(form); (II)
}
});
function finalConfirm(form){
confirm('message', function (confirmed) {
if(confirmed) form.submit() (III)
})
}
</script>
我希望 //do something here (I)
在 if(confirmed) form.submit() (III)
之后执行,或者至少在之前和之后执行,但它只在它之前执行(如我在代码中所示)
在 form
元素(DOM 元素,而不是 jQuery 包装器)上直接 调用 submit
不会触发 submit
个处理程序。验证插件传递你的 submitHandler
的参数是 DOM 元素,而不是它的 jQuery 包装器(根据 this documentation)。
在 form
元素的 jQuery 包装器上调用 submit
会 触发 submit
处理程序(至少,附有 jQuery 的)。因此,如果您希望 finalConfirm
中的 form.submit()
触发您的提交处理程序,请为其创建一个 jQuery 包装器:
$(form).submit();
(在那里,或在 submitHandler
将其传递给 finalConfirm
之前。)
只要确保您不会陷入无限循环即可。 :-)