jQuery确认用于提交的模式框

时间:2013-12-31 14:21:16

标签: php jquery

您好我想使用模态框插件确认提交表单,但我有以下问题:

当你点击我的HTML表单模式框中的提交按钮但是点击提交表单后没有提交 - 只是什么都不做。我需要改变什么?

$('#mediamall-convert-form').submit(function() {
    // Reset errors
    $('#convert-sum-error').hide();

    // New validation
    valid_form = true;

    sum = parseFloat($('#convert-sum').val());
    if ((sum == '') ||
            (sum < 1) ||
            (sum > < ?php echo $author - > balance; ? > ) ||
            (sum % < ?php echo __md_cost_per_credit__; ? > != 0) ||
            (isNaN(sum)))
    {
        valid_form = false;
        $('#convert-sum-error').show();
    }

    if (valid_form)
    {

        //return confirm('<?php echo mmll_are_you_sure_you_want_to_continue; ?>?');
        //  $('.button5').click(function(){
        $.confirm({
            'title': 'Delete Confirmation',
            'message': 'You are about to delete this item. <br />It cannot be restored at a later time! Continue?',
            'buttons': {
                'Yes': {
                    'class': 'blue',
                    'action': function() {
                        return true;

                    }

                },
                'No': {
                    'class': 'gray',
                    'action': function() {

                    }   // Nothing to do in this case. You can as well omit the action property.
                }

            }

        });
        //  });

    }

    return false;
});

1 个答案:

答案 0 :(得分:1)

您始终从false处理程序返回submit

$('#mediamall-convert-form').submit(function () {
    // some logic
    // show the modal dialog
    return false;
});

对话框的return true;选项中的Yes没有按照您的想法进行操作。它只从它存在的函数返回:

function(){
    return true;
}

从整个提交处理程序返回 。 (返回语句不起作用,它们只退出调用它们的函数的范围,而不是调用堆栈上的父函数。)

我不熟悉您正在使用的“确认”插件,但我怀疑它是异步运行的,因此总是执行最后的return false;,并且回调中的return true;只是从无到有,无所作为。在回调中,您可能不希望返回,而是希望提交表单。类似的东西:

function () {
    $('#mediamall-convert-form').submit();
}

然而,您将覆盖提交处理程序,因此这可能会在堆栈上创建无限循环的提交调用。我们绝对不希望如此。因此,您可能需要将整个处理程序更改为按钮单击处理程序(或任何适当的),而不是表单提交处理程序。类似的东西:

$('#mediamall-convert-form input[type=submit]').click(function () {
    // handler
});