У меня есть код
<a href="<?php echo site_url('company/remove_company/'.$value['id']).'/'.$value['company_name']; ?>" title="Remove Data"><i class="icon-trash"></i></a>
и у меня есть другой код, написанный на jquery и использующий функцию sweetalert, которая выдаст предупреждающее сообщение, если пользователь пытается удалить запись в базе данных.
$(".icon-trash").click(function(){
swal({
title: "Are you sure?",
text: "You will not be able to recover this imaginary file!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
closeOnConfirm: false }, function() {
swal("Deleted!", "Your imaginary file has been deleted.", "success");
});
});
проблема моего кода в том, что когда пользователь нажимает на ссылку, он очень быстро всплывает и переходит по ссылке, указанной в href
приписывать. Я бы хотел запретить переход на ссылку, позволяющую всплывающему окну отображаться до тех пор, пока пользователь не решит, нажимать ли на yes delete it
или же cancel
и не перейдет по ссылке, если пользователь нажмет cancel
,
Любая помощь? Я не знаю, что с этим делать.
Вам нужно предотвратить действие по умолчанию, и в случае успеха приступить к изменению местоположения:
$(".icon-trash").click(function(e) {
var that = this;
// Prevent the default action. « Look here.
e.preventDefault();
swal({
title: "Are you sure?",
text: "You will not be able to recover this imaginary file!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
closeOnConfirm: false }, function() {
swal("Deleted!", "Your imaginary file has been deleted.", "success");
// In this confirm, add the location. « Look here.
location.href = $(that).attr("href");
});
});
Кроме того, всегда лучше не иметь никаких функций записи в базу данных, таких как:
в GET
метод. Это опасно. Таким образом, вы должны подумать об изменении его, давая POST
метод и выполнить его через JavaScript / AJAX.
Вы также можете достичь этого путем:
Ссылка:
<a href="<?php echo site_url('company/remove_company/'. $value->id); ?>" class="delete-company">
Сценарий:
$('.delete-company').on('click', function(e) {
var that = $(this);
swal({
title: "Are you sure?",
text: "You will not be able to recover this user account!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
cancelButtonText: "No, cancel please!",
closeOnConfirm: false,
closeOnCancel: false
},
function(isConfirm){
if (isConfirm) {
location.replace(that.attr('href'));
swal("Success","User successfully removed!", "success");
} else {
swal("Cancelled", "Removing user accout was cancelled!", "error");
}
});
e.preventDefault();
});