我们尝试在帖子返回验证后停止提交表单。呼叫在承诺内并在确认对话框之后。
几个小时后,我无法让它发挥作用。
var $form = $('#frmBoleto');
$form.submit(function(e){
var modo = $('input[name="modo"]:checked').val();
if (modo == 'naoimprime'){
// Send post
$.when( $.post($form.attr('action') + '?verifica', $form.serialize())).then(function( d ){
if (d && d.exists){
var answer = window.confirm('You sure?');
if (!answer){
e.preventDefault();
e.stopImmediatePropagation();
e.stopPropagation();
}
}
});
}
});
表格总是被提交,为什么?
答案 0 :(得分:2)
$post().then(...)
回调在稍后的事件线程中触发,因此为时已晚,无法阻止表单提交。
您需要在.submit()
处理程序中无条件地禁止表单提交,并在.then()
回调中有条件地强制提交。
var $form = $('#frmBoleto');
$form.submit(function(evt) {
evt.preventDefault();
if ($('input[name="modo"]:checked').val() == 'naoimprime') {
$.post($form.attr('action') + '?verifica', $form.serialize()).then(function(d) {
if (d && d.exists && window.confirm('You sure?')) {
$form.get(0).submit();
}
});
}
});
答案 1 :(得分:0)
在onsubmit事件方法中返回 false 。