我正在使用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-confirm
与submit()
一起使用时,从PHP方面来看,它无法捕获任何$_POST['message_id']
值。
有关详细信息,请参阅我的jsfiddle:
答案 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();
}
});