使用jConfirm防止脚本运行,如本机确认

我有一个jConfirm的问题,它应该像普通的javascript confim框一样工作,但它没有,这是一个例子

 

如果我使用正常确认它会停止脚本,直到给出响应,然而jConfirm但是,表格仍在提交,即使没有给出答案,任何解决方法?

提前致谢

EDIT1:使用Slaks的想法我试图调整默认的jAlert插件,这就是我得到的。

 submit: function(message, title, btnId) { $.alerts._show(title, message, null, 'confirm', function(result, btnId) { if (result){ var form = $('#'+btnId).closest('form'); form.trigger('submit'); } else return false }); }, 

问题是我不知道如何将’btnId’变量传递给_show回调函数,任何想法?

像这样:

  

将它移动到单独的处理程序会好得多:

 $(':submit').click(function(e) { e.preventDefault(); //Don't submit until the user hits yes var form = $(this).closest('form'); jConfirm('Are you sure?', function(r) { if (r) form.submit(); }); }); 

最后我像这样修理它,发送按钮按钮(调用函数时带’this’)我可以获取表单然后提交它,我也可以附加一个隐藏的输入按下按钮,这样我就可以执行用PHP正确行动。

 submit: function(message, title, btnObj) { $.alerts._show(title, message, null, 'confirm', function(result) { if (result){ var form = $(btnObj).closest('form'); var input = ''; $(form).append(input); form.trigger('submit'); } else return false }); }, 

你也可以做一个普通的表格,然后:

 $('.submitButton').click(function(event) { if(!confirm('Are you sure you want to delete this customer?')) { event.preventDefault(); } }); 

您遇到的麻烦源于您尝试使用异步函数,就好像它是同步的一样。 我在回答类似问题时对此进行了广泛的讨论。

简单的JavaScript confirm() 适用于您的情况,因为它是同步的。 在使用JavaScript和HTML的浏览器中创建自己的自定义同步确认对话框根本不可能

要使用自定义对话框确认提交表单,您需要:

  1. 始终onsubmitonclick处理程序返回false
  2. 在确认处理程序中,使用JavaScript提交表单。 即, myForm.submit()