jquery-confirm - 提交带有多个按钮的表单中的点击按钮

时间:2016-05-20 06:33:35

标签: javascript jquery forms

我正在使用this非常好的Jquery确认插件,问题是我在使用多个按钮的表单中提交特定按钮时出现问题,我的代码在php side没有jquery-confirm插件的情况下正常工作。它可以获得确切的按钮提交值,但我想在提交之前得到确认。以下是我的情景:

我有2个单一形式的删除提交按钮,并与jquery-confirm集成。当我点击特定删除按钮(18)时,它提交整个表单,我想要的只是允许提交的点击按钮,下面是我的代码:

<form action="" method="POST" id="messages">
<button type="submit" name="message_id" value="18" class="btn btn-danger confirmation" >Delete</button>

<button type="submit" name="message_id" value="17" class="btn btn-danger confirmation" >Delete</button>
</form>

Jquery代码:

$('.confirmation').confirm({
        content: 'Delete this message?',
        title: 'Please confirm',
        confirm: function(){
            $('#messages :submit').submit();
        }
    });

到目前为止,我已尝试使用this.$target.closest('#messages').submit();,并触发(&#39;点击&#39;)但是他们没有按预期工作。

如果我在onclick="return confirm('Delete this message?');"内添加button,它会触发警告框并按预期提交所选按钮,而不是整个表单提交。我想要的是仅在提交按钮时从PHP端获取提交按钮的值。当我点击特定删除按钮(值18)时,我可以在没有$_POST['message_id']插件的情况下捕获jquery-confirm值= 18。但是当我将jquery-confirmsubmit()一起使用时,从PHP方面来看,它无法捕获任何$_POST['message_id']值。

有关详细信息,请参阅我的jsfiddle

2 个答案:

答案 0 :(得分:1)

尝试这种方法。

$('button[type=submit]').on('click',function(e){
e.preventDefault(); // prevent submit button from firing and submit form
var $this = $(this);   
$('.confirmation').confirm({
        content: 'Delete this message?',
        title: 'Please confirm',
        confirm: function(){
           $this.parent('form').submit(); // since user has confirmed action now submit form
        }
    });
});

创建一个小的delete.php文件,您可以在其中放置处理删除邮件的php代码。

使用jQuery post()确认后提交您的数据。

    $('button[type=submit]').on('click',function(e){
        e.preventDefault(); // prevent submit button from firing and submit form
        var $this = $(this);   
        $('.confirmation').confirm({
                content: 'Delete this message?',
                title: 'Please confirm',
                confirm: function(){
                         $.post( "delete.php", { message_id: $this.val() })
                         .done(function() {
                          alert( "second success" );
                          })
                          .fail(function() {
                          alert( "error" );
                          });
                }
            });
        });

答案 1 :(得分:0)

我发现一个解决方法是添加带有点击的message_id值的隐藏输入,所以现在一切正常,如果有其他人需要这个就发布在这里:

$('.confirmation').confirm({
        content: 'Delete this message?',
        title: 'Please confirm',
        confirm: function(){
            $('<input>').attr('type','hidden').attr('name', 'message_id').attr('value', this.$target.val()).appendTo('form');
            $('#messages').submit();
        }
    });