1

我有一系列对应于条目的复选框,还有一个删除所有按钮,我附加了一个 jquery ui 模式确认。在这里摆弄:http: //jsfiddle.net/BxdWc/。问题是,在确认对话框中点击“是”后,它没有提交表单(不由 php 处理)。php 代码包含在页面顶部,但我相当肯定它与此无关,因为没有模式代码处理,并正确删除检查的条目。

JS:

$(function () {
    $("#dialog-confirm-multiple").dialog({
        autoOpen: false,
        resizable: false,
        width: 300,
        modal: true,
        show: {
            effect: "bounce",
            duration: 100
        },
        hide: "drop",
        buttons: {
            "Yes": function () {
                $("#confirm").submit();
                $(this).dialog("close");
            },
            "No": function () {
                $(this).dialog("close");
            }
        }
    });
    $("#doDelete").click(function (e) {
        e.preventDefault();
        $("#dialog-confirm-multiple").dialog('open');
        return false;
    });
});

HTML:

<form post="self.php" id="confirm">
<!-- some inputs .etc -->
<input name="doDelete" type="submit" id="doDelete" value="Delete" class="btn btn-danger">
</form>
4

2 回答 2

3

看起来您的 PHP 正在检查单击了哪个按钮。当您通过$('#confirm').submit();. 如果按钮被实际点击,浏览器只会在提交中包含按钮。

有几种方法可以让按钮名称/值对包含在提交中。

您可以按照此答案$('form').serializeArray();中的说明使用和推送 doDelete/Delete 对

或者你可能会做这样的事情而侥幸逃脱。请注意,单击删除按钮是第二次调用。按钮单击事件检查它是否是通过触发器(也称为对话框)启动的。第二次,它不会被阻止提交。

$(function () {
    $("#dialog-confirm-multiple").dialog({
        autoOpen: false,
        resizable: false,
        width: 300,
        modal: true,
        show: {
            effect: "bounce",
            duration: 100
        },
        hide: "drop",
        buttons: {
            "Yes": function () {
                $(this).dialog("close");
                $("#doDelete").click();
            },
            "No": function () {
                $(this).dialog("close");
            }
        }
    });
    $("#doDelete").click(function (e,ui) {
        if(e.originalEvent) {
            e.preventDefault();
            $("#dialog-confirm-multiple").dialog('open');
            return false;
        }
    });
});

小提琴在这里

于 2013-07-10T02:26:21.700 回答
0

我对此进行了一些修改,以便当您使用类而不是 id 表示确认按钮时它可以工作。我是一个javascript新手,所以要小心!随意改进这一点。

$(function () {
    $("input.doDelete").click(function (e,ui) {
        var button = $(e.target);
        $("#dialog-confirm-multiple").dialog({
            autoOpen: false,
            resizable: false,
            width: 300,
            modal: true,
            show: {
                effect: "bounce",
                duration: 100
            },
            hide: "drop",
            buttons: {
                "Yes": function () {
                    $(this).dialog("close");
                    button.click();
                },
                "No": function () {
                    $(this).dialog("close");
                }
            }
        });
        if(e.originalEvent) {
            e.preventDefault();
            $("#dialog-confirm-multiple").dialog('open');
            return false;
        }
    });
});
于 2014-01-11T22:31:29.920 回答