使用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的浏览器中创建自己的自定义同步确认对话框根本不可能 。
要使用自定义对话框确认提交表单,您需要:
- 始终从
onsubmit
或onclick
处理程序返回false
。 - 在确认处理程序中,使用JavaScript提交表单。 即,
myForm.submit()
。