2

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

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

3 回答 3

0

这可能会有所帮助:

$("button[type=submit]").click(function(e) {
e.preventDeafault();
#("#txt_fld1").blur();
$("form").submit();
});
于 2012-06-28T07:09:04.150 回答
0

这似乎是因为“提交”需要提交按钮上的点击事件。但是实际上并没有发生单击,因为当您执行 mousedown 时,然后确认弹出,因此提交按钮上的模糊事件,即 mouseup-event 没有发生,因此没有单击。因此,当确认关闭时,提交按钮已经失去焦点并且没有发生提交。

您必须使用 mousedown-event 上的处理程序手动提交表单

$("input:submit").mousedown(function(e){
    e.preventDefault();
    //$("#txt_fld1").blur();
    $('form').submit();
});
于 2012-06-28T07:18:50.577 回答
0

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

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

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

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

于 2012-06-28T07:16:52.433 回答