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

时间:2010-08-19 16:00:13

标签: javascript jquery

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

<input type="submit" value="click" onClick="return jConfirm('are you sure?')">

如果我使用正常确认它会停止脚本,直到给出响应,然而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回调函数,有什么想法吗?

4 个答案:

答案 0 :(得分:0)

像这样:

<input type="submit" value="click" onClick="jConfirm('are you sure?', function(r) { if (r) document.forms[something].submit(); }); return false;">

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

$(':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();
    });
});

答案 1 :(得分:0)

最后我修复了这个,发送按钮按钮(调用函数时带'this')我可以获取表单然后提交它,我也可以附加一个隐藏的输入按下按钮所以我可以用PHP执行适当的操作。

submit: function(message, title, btnObj) {
            $.alerts._show(title, message, null, 'confirm', function(result) {
                if (result){
                    var form = $(btnObj).closest('form');
                    var input = '<input type="hidden" name="action" value="'+$(btnObj).attr('value')+'">';
                    $(form).append(input);
                    form.trigger('submit');
                }   
                else
                    return false
            });
        },

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您遇到的麻烦源于您尝试使用异步函数,就好像它是同步的一样。我在my answer to a similar question中广泛讨论了这个问题。

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

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

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