我正在使用Swal来替换所有JavaScript默认警报和东西。 在我的一个页面上有一个表单,我也使用 Swal 要求用户在实现之前确认他的操作(删除文件)。
问题是我无法使表单正常工作。这是 Swal 代码:
jQuery('.deleteFile').click(function(event){
event.preventDefault();
swal({
title: "You sure about deleting this file?",
icon: "warning",
buttons: {
cancel: "hmm let me think this through",
confirm: "100% sure !",
},
dangerMode: true,
})
.then((willDelete) => {
if (willDelete) {
$('#form1').submit();
} else {
return false;
}
});
});
这是我的提交按钮:
<button type="submit" name="delete_file" class="btn btn-danger deleteFile">Delete</button>
这里要提的很少:
在JavaScript/jQuery方面,我完全是一个新手。所以如果你在这里发现任何搞笑的错误,请原谅我的菜鸟<3
我搜索了很多,并尝试了我找到的所有建议,例如使用许多用户建议的isConfirm 功能。但没有一个奏效。isConfirm 函数的使用实际上会错误整个代码,甚至警报部分也不会弹出。
代码的.then((willDelete)部分是Swal的默认代码,实际上工作正常。
类 deleteFile 指向提交按钮。ID 表单 1 指向表单本身。
在代码的当前状态下,当用户按下确认按钮时,页面将刷新,看起来它已完成工作。但它实际上不起作用。我编写了以下代码来测试它:
if(isset($_POST['delete_file'])){ echo 'WOOT IT WORKED!'; }
但它不回应任何东西(QQ)
不用说,delete_file是我的提交按钮的名称属性。
说,delete_file是我的提交按钮的名称属性。
嗯,这就是问题所在。仅当您单击提交按钮时,才会提交该按钮的名称。如果使用 JavaScript 提交表单,则不会提交提交按钮名称和值。
为了防止这种情况,您可以将它们添加到隐藏的输入中,而不是在提交按钮中使用名称/值,如下所示:
<input type="hidden" name="delete_file" value="Delete">
或者,您可以检查是否设置了其他字段,例如要删除的文件的 ID。