2012-06-28 129 views
2

我有一个简单的窗体,其中textfield的模糊事件我向用户显示确认消息,它只是自动填充另一个隐藏的文本框。迄今为止效果很好。当用户直接单击提交按钮而不是单击另一个字段或表单上的任何其他位置时,问题就会发生。这应该触发模糊和提交事件,但由于某些原因模糊触发,确认出现,并且一旦用户点击确认,提交事件不会被触发。用户被迫再次点击提交以触发提交事件。有任何想法吗?模糊事件触发器后提交事件不会触发javascript确认

$(function(){ 
    $("#txt_fld1").blur(function(){ 
     if(confirm("Auto calculate charge?")) 
     { 
     $("#txt_chrg").val("8.25"); 
     } 
    }); 
    $("form").submit(function(){ 
     alert("SUBMITTING"); 
    }); 
}) 
+1

'alert'和'confirm'被阻止脚本的处理程序。为什么不保留“自动计算费用”复选框?只是说.. –

+0

我希望我可以,但我的客户喜欢弹出确认....叹了口气 – Bluemagica

+0

然后你可以使用jQuery UI的确认对话框。并为'Ok'和'Cancel'提供回调。 http://jqueryui.com/demos/dialog/modal-confirmation.html –

回答

0

这可能帮助:

$("button[type=submit]").click(function(e) { 
e.preventDeafault(); 
#("#txt_fld1").blur(); 
$("form").submit(); 
}); 
+0

我不能停止冒泡,因为我需要确认...这是用户点击提交时,它需要做验证,然后自动提交 – Bluemagica

0

考虑使用jQuery UI的自定义的确认对话框。

您可以将回调传递给OkCancel事件,以便您可以确保始终触发submit()

实际上,您可以在以编程方式提交之前触发其他验证。

http://jqueryui.com/demos/dialog/#modal-confirmation

+0

嘿检查我的问题在http://stackoverflow.com/questions/42707047/jquery-ajax-form-requires-2-clicks-to-submit – DragonFire

0

看来,这是因为“提交”要求提交按钮点击事件。但是点击并不实际发生,因为当您执行mousedown时,然后确认弹出并因此提交按钮上出现模糊事件,即没有发生mouseup事件,因此没有点击。所以当确认关闭时,提交按钮已经失去了焦点,也没有发生提交。

您必须手动提交表单,用鼠标按下上事件

$("input:submit").mousedown(function(e){ 
    e.preventDefault(); 
    //$("#txt_fld1").blur(); 
    $('form').submit(); 
}); 
+0

我试过这个,它没有工作,似乎像模糊触发器 – Bluemagica

+0

尝试删除手动触发的模糊 – user907860

+0

我甚至没有提供触发器 – Bluemagica