我想在laravel应用程序实现删除确认时,点击删除按钮。如果没有确认对话框,它可以正常工作,但当我添加javascript确认代码时不工作。
这是我的刀片文件
<a href="{{ route('user.destroy', $user->id)}}" class="dropdown-item" onclick="
var result = confirm('are you sure delete this?');
if (result) {
document.getElementById('delete_user').submit();
}
event.preventDefault();
"><i class="icon-bin text-danger"></i> Delete</a>
<form id="delete_user" action="{{ route('user.destroy', $user->id)}}" method="POST">
@method('DELETE')
@csrf
</form>
我使用原生onsubmit
函数创建了一个表单。
<form method="POST" action="{{route('user.destroy', ['user' => $user])}}" accept-charset="UTF-8" style="display: inline" onsubmit="return confirm('Are you sure wanted to delete it?')">
@method('DELETE')
@csrf
<button type="submit" class="btn btn-danger btn btn-sm">
Delete
</button>
</form>
我一直在使用它为我的许多项目,它的工作很好。你能试试吗?
我试着在你的代码中找到错误,我把它整理出来了。
当您将delete_user
添加到表单并在a
标签中引用这些id时,表单的id
需要是唯一的,否则它将删除删除错误的记录,因此我通过添加id
(每个记录的id)来修复它,例如delete_user_{{$user->id}}
所以这是你的代码与错误修复。
<a href="{{ route('user.destroy', ['user' => $user])}}" class="dropdown-item" onclick="
var result = confirm('are you sure delete this?');
if (result) {
document.getElementById('delete_user_{{$user->id}}').submit();
}
event.preventDefault();
"><i class="icon-bin text-danger"></i> Delete</a>
<form id="delete_user_{{$user->id}}" action="{{ route('user.destroy', ['user' => $user]) }}" method="POST">
@method('DELETE')
@csrf
</form>
如果你遇到任何问题,请在下面评论
从<a>
中移除href
属性。而且onclick必须是function
<a class="dropdown-item" onclick="deleteUser(event)"><i class="icon-bin text-danger"></i> Delete</a>
在文件底部定义删除函数
<script>
function deleteUser(event){
var result = confirm('are you sure delete this?');
if (result) {
document.getElementById('delete_user').submit();
}
event.preventDefault();
}
</script>