Как показать подтверждающее сообщение перед удалением?

204

Я хочу получить подтверждающее сообщение, нажав кнопку «Удалить» (это может быть кнопка или изображение). Если пользователь выбираетOk », то удаление выполняется, иначе, если Cancelнажать «», ничего не происходит.

Я попытался повторить это, когда кнопка была нажата, но повторяющиеся вещи заставляют мои поля ввода и текстовые поля терять свои стили и дизайн.

Шьям К
источник

Ответы:

330

Запишите это в onclickслучае кнопки:

var result = confirm("Want to delete?");
if (result) {
    //Logic to delete the item
}
Ved
источник
блестящий ответ! Короче говоря, точный и работает эффективно
Джон
Для любого неопытного пользователя JavaScript ваши строки кода ничего не значат, пример выглядит неубедительным и запутанным. Тем не менее, это хороший ответ.
Самуэль Рамзан
Я думаю, что вы должны добавить некоторые детали к своему ответу. Почему вы вставляете код внутри кнопки вместо того, чтобы записывать его в раздел заголовка или во внешний файл? Это очень общая функция, и программист может захотеть использовать ее несколько раз для нескольких кнопок, я бы не стал писать ее внутри одной конкретной кнопки ...
franz1
286

Вы можете лучше использовать следующим образом

 <a href="url_to_delete" onclick="return confirm('Are you sure you want to delete this item?');">Delete</a>
Рагхав Рах
источник
2
Это должно быть в порядке. Просто, быстро, эффективно. Делает работу просто отлично.
DonExo
Очень опасно! Что если Javascript был отключен? Или если бы паук / поисковый бот прочитал бы эту страницу? Затем следуйте по всем ссылкам и удалите все! Некоторые плагины для браузера также следуют по всем ссылкам на странице, чтобы предварительно ее кэшировать. НИКОГДА не делай так! Удаление никогда не должно быть запросом GET.
Даниэле Теста
Это не менее опасно, чем первый ответ, любой JavaScript опасен, если JavaScript отключен. Включение или отключение JavaScript - это личный выбор пользователя. Если JavaScript отключен, пользователь должен лучше знать, чтобы не нажимать какие-либо кнопки на любом веб-сайте. Всегда есть проверка на стороне сервера как прекрасная альтернатива.
Самуэль Рамзан
53

Вот как вы можете сделать это с помощью ненавязчивого JavaScript и сообщения подтверждения, удерживаемого в HTML.

<a href="/delete" class="delete" data-confirm="Are you sure to delete this item?">Delete</a>

Это чистый ванильный JS, совместимый с IE 9+:

var deleteLinks = document.querySelectorAll('.delete');

for (var i = 0; i < deleteLinks.length; i++) {
  deleteLinks[i].addEventListener('click', function(event) {
      event.preventDefault();

      var choice = confirm(this.getAttribute('data-confirm'));

      if (choice) {
        window.location.href = this.getAttribute('href');
      }
  });
}

Посмотрите это в действии: http://codepen.io/anon/pen/NqdKZq

DevAntoine
источник
Это работает отлично, но работает только для первой кнопки. Что если у нас их будет 20 или больше? Спасибо!
Эмоциональность
1
Вы правы, это потому, что querySelector соответствует только первому элементу. Я отредактировал ответ и раздвоил кодовую ручку, чтобы вместо этого использовать querySelectorAll.
DevAntoine
Было бы здорово, если бы этот пример был отредактирован, чтобы также работать с отключенным JavaScript, например, href="https://stackoverflow.com/delete"было бы достаточно, я думаю. Или пример отправки формы.
Сиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 Это уже так благодаря функции event.preventDefault (). Вы можете заменить хеш-символ URL-адресом, он не будет запущен. Но, если JavaScript отключен, ссылка будет работать как положено.
DevAntoine
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 Вот, пожалуйста;)
DevAntoine
28
function ConfirmDelete()
{
  var x = confirm("Are you sure you want to delete?");
  if (x)
      return true;
  else
    return false;
}


<input type="button" onclick="ConfirmDelete()">
user1697128
источник
Я думаю, что лучше иметь только 1 точку возврата. так что я предпочитаю
джедай
17
Или просто return confirm("…"). Нет необходимости присваивать переменную, которая является логической, а затем переходить в if / else.
Slhck
16

Попробуй это. Меня устраивает

 <a href="delete_methode_link" onclick="return confirm('Are you sure you want to Remove?');">Remove</a>
Шухад Заман
источник
1
Красиво и эффективно.
Самуэль Рамзан
13

это очень просто и одна строка кода

<a href="#" title="delete" class="delete" onclick="return confirm('Are you sure you want to delete this item')">Delete</a>
Мухаммед Музаммил
источник
Похоже, что уже есть ответ ниже этого принятого ответа.
шляпа
12

улучшение user1697128 (потому что я пока не могу это комментировать)

<script>
    function ConfirmDelete()
    {
      var x = confirm("Are you sure you want to delete?");
      if (x)
          return true;
      else
        return false;
    }
</script>    

<button Onclick="return ConfirmDelete();" type="submit" name="actiondelete" value="1"><img src="images/action_delete.png" alt="Delete"></button>

отменит отправку формы, если отменить нажатие

Jaxx0rr
источник
8

Я хотел бы предложить способ, которым я делаю это:

<form action="/route" method="POST">
<input type="hidden" name="_method" value="DELETE"> 
<input type="hidden" name="_token" value="the_token">
<button type="submit" class="btn btn-link" onclick="if (!confirm('Are you sure?')) { return false }"><span>Delete</span></button>
</form>
Нули-и-оны
источник
6

HTML

<input onclick="return myConfirm();" type="submit" name="deleteYear" class="btn btn-danger" value="Delete">

Javascript

<script>
function myConfirm() {
  var result = confirm("Want to delete?");
  if (result==true) {
   return true;
  } else {
   return false;
  }
}

nazmulhaqued
источник
4

HTML:

<a href="#" class="delete" data-confirm="Are you sure to delete this item?">Delete</a>

Используя jQuery:

$('.delete').on("click", function (e) {
    e.preventDefault();

    var choice = confirm($(this).attr('data-confirm'));

    if (choice) {
        window.location.href = $(this).attr('href');
    }
});
julionc
источник
Хорошая jQuery-адаптация ответа DevAntoines ( stackoverflow.com/a/19973570/1337887 ). Тем не менее, несколько более обобщенным подходом было бы использовать «$ ('A [data-verify]')» вместо «$ ('. Delete')». Таким образом, вам не нужно, чтобы кнопки имели класс удаления, а просто интегрируйте атрибут подтверждения данных.
Флориан
4
<a href="javascript:;" onClick="if(confirm('Are you sure you want to delete this product')){del_product(id);}else{ }" class="btn btn-xs btn-danger btn-delete" title="Del Product">Delete Product</a>

<!-- language: lang-js -->
<script>
function del_product(id){
    $('.process').css('display','block');
    $('.process').html('<img src="./images/loading.gif">');
    $.ajax({
        'url':'./process.php?action=del_product&id='+id,
        'type':"post",
        success: function(result){
            info=JSON.parse(result);
            if(result.status==1){
                setTimeout(function(){
                    $('.process').hide();
                    $('.tr_'+id).hide();
                },3000);
                setTimeout(function(){
                    $('.process').html(result.notice);
                },1000);
            } else if(result.status==0){
                setTimeout(function(){
                    $('.process').hide();
                },3000);
                setTimeout(function(){
                    $('.process').html(result.notice);
                },1000);
            }
        }
    });
}
</script>
Химос
источник
3

Если вы заинтересованы в каком-нибудь быстром симпатичном решении с готовым форматом css, вы можете использовать SweetAlert

$(function(){
  $(".delete").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(isConfirmed){ 
        if(isConfirmed) {
          $(".file").addClass("isDeleted");
          swal("Deleted!", "Your imaginary file has been deleted.", "success"); 
        }
      }
    );
  });
});
html { zoom: 0.7 } /* little "hack" to make example visible in stackoverflow snippet preview */
body > p { font-size: 32px }

.delete { cursor: pointer; color: #00A }
.isDeleted { text-decoration:line-through }
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="http://t4t5.github.io/sweetalert/dist/sweetalert-dev.js"></script>
<link rel="stylesheet" href="http://t4t5.github.io/sweetalert/dist/sweetalert.css">

<p class="file">File 1 <span class="delete">(delete)</span></p>

Buksy
источник
2

установить сообщение о подтверждении при удалении чего-либо в php & mysql ...

используйте этот код скрипта:

<script>
    function Conform_Delete()
    {
       return conform("Are You Sure Want to Delete?");
    }
</script>

используйте этот HTML-код:

<a onclick="return Conform_Delete()" href="#">delete</a>
Ашик
источник
2
var txt;
var r = confirm("Press a button!");
if (r == true) {
   txt = "You pressed OK!";
} else {
   txt = "You pressed Cancel!";
}

var txt;
var r = confirm("Press a button!");
if (r == true) {
    txt = "You pressed OK!";
} else {
    txt = "You pressed Cancel!";
}

гауравбхай даксини
источник
1

Используя jQuery:

$(".delete-link").on("click", null, function(){
        return confirm("Are you sure?");
    });
Apeli
источник
1

Я знаю, что это старый, но мне нужен был ответ, и ни один из них, но ответ alpesh работал для меня и хотел поделиться с людьми, которые могли иметь такую ​​же проблему.

<script>    
function confirmDelete(url) {
    if (confirm("Are you sure you want to delete this?")) {
        window.open(url);
    } else {
        false;
    }       
}
</script>

Нормальная версия:

<input type="button" name="delete" value="Delete" onClick="confirmDelete('delete.php?id=123&title=Hello')">

Моя версия PHP:

$deleteUrl = "delete.php?id=" .$id. "&title=" .$title;
echo "<input type=\"button\" name=\"delete\" value=\"Delete\" onClick=\"confirmDelete('" .$deleteUrl. "')\"/>";

Это не может быть правильным способом сделать это публично, но это сработало для меня на частном сайте. :)

emotality
источник
1

Это очень просто

function archiveRemove(any) {
    var click = $(any);
    var id = click.attr("id");
    swal.fire({
        title: 'Are you sure !',
           text: "?????",
           type: 'warning',
           showCancelButton: true,
           confirmButtonColor: '#3085d6',
           cancelButtonColor: '#d33',
           confirmButtonText: 'yes!',
           cancelButtonText: 'no'
    }).then(function (success) {
        if (success) {
            $('a[id="' + id + '"]').parents(".archiveItem").submit();
        }
    })
}
Амир Карим
источник
0
function del_confirm(msg,url)
        {
            if(confirm(msg))
            {
                window.location.href=url
            }
            else
            {
                false;
            }

        }



<a  onclick="del_confirm('Are you Sure want to delete this record?','<filename>.php?action=delete&id=<?<id> >')"href="#"></a>
alpesh
источник
0
<SCRIPT LANGUAGE="javascript">
function Del()
{
var r=confirm("Are you sure?")
if(r==true){return href;}else{return false;}
}
</SCRIPT>

Ваша ссылка для этого:

<a href='edit_post.php?id=$myrow[id]'> Delete</a>
Азат
источник
0

Обработчик onclick должен возвращать false после вызова функции. Например,

onclick="ConfirmDelete(); return false;">

Amit
источник
0

Я думаю, что самое простое ненавязчивое решение было бы:

Ссылка на сайт:

<a href="http://link_to_go_to_on_success" class="delete">Delete</a>

Javascript:

$('.delete').click(function () {
    return confirm("Are you sure?");
});
Cookalino
источник
0
<a href="javascript:;" onClick="if(confirm('Are you sure you want to delete this product')){del_product(id);}else{ }" class="btn btn-xs btn-danger btn-delete" title="Del Product">Delete Product</a>


function del_product(id){
    $('.process').css('display','block');
    $('.process').html('<img src="./images/loading.gif">');
    $.ajax({
        'url':'./process.php?action=del_product&id='+id,
        'type':"post",
        success: function(result){
            info=JSON.parse(result);
            if(result.status==1){
            setTimeout(function(){
                    $('.process').hide();
                    $('.tr_'+id).hide();
                },3000);
                setTimeout(function(){
                    $('.process').html(result.notice);
                },1000);
            }else if(result.status==0){
                setTimeout(function(){
                    $('.process').hide();
                },3000);
                setTimeout(function(){
                    $('.process').html(result.notice);
                },1000);

                }
            }
        });
}
xahoigiaitri
источник
0

Вот еще один простой пример в чистом JS с использованием className и привязкой к нему события.

var eraseable =  document.getElementsByClassName("eraseable");

for (var i = 0; i < eraseable.length; i++) {
    eraseable[i].addEventListener('click', delFunction, false); //bind delFunction on click to eraseables
}

function delFunction(){        
     var msg = confirm("Are you sure?");      
     if (msg == true) { 
        this.remove(); //remove the clicked element if confirmed
    }   
  };
<button class="eraseable">
<img class="eraseable" src="http://zelcs.com/wp-content/uploads/2013/02/stackoverflow-logo-dumpster.jpg" style="width:100px;height:auto;">
Delete me</button>

<button class="eraseable">
<img class="eraseable" src="http://zelcs.com/wp-content/uploads/2013/02/stackoverflow-logo-dumpster.jpg" style="width:100px;height:auto;">
Delete me</button>

<button class="eraseable">
<img class="eraseable" src="http://zelcs.com/wp-content/uploads/2013/02/stackoverflow-logo-dumpster.jpg" style="width:100px;height:auto;">
Delete me</button>

Арун Шарма
источник
0
<script>
function deleteItem()
{
   var resp = confirm("Do you want to delete this item???");
   if (resp == true) {
      //do something
   } 
   else {
      //do something
   }
}
</script>

вызвать эту функцию, используя onClick

Пранав В.Р.
источник
0

Для «подтверждающего сообщения об удалении» используйте:

                       $.ajax({
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        url: "Searching.aspx/Delete_Student_Data",
                        data: "{'StudentID': '" + studentID + "'}",
                        dataType: "json",
                        success: function (data) {
                            alert("Delete StudentID Successfully");
                            return true;
                        }
Арвинд Упадхяй.
источник
0

Angularjs с Javascript Удалить пример

HTML-код

<button ng-click="ConfirmDelete(single_play.play_id)" type="submit" name="actiondelete" value="1"><img src="images/remove.png" alt="Delete"></button>

"single_play.play_id" - любая переменная angularjs, если вы хотите передать какой-либо параметр во время действия удаления

Код Angularjs внутри модуля приложения

$scope.ConfirmDelete = function(yy)
        {
            var x = confirm("Are you sure you want to delete?");
            if (x) {
             // Action for press ok
                $http({
                method : 'POST',
                url : 'sample.php',
                headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                data: $.param({ delete_play_id : yy})
                }).then(function (response) { 
                $scope.message = response.data;
                });
            }
            else {
             //Action for cancel
                return false;
            }
        } 
Rijo
источник
0

Гораздо сложнее сделать это для блоков выбора. Вот решение:

<select onchange="if (this.value == 'delete' && !confirm('THIS ACTION WILL DELETE IT!\n\nAre you sure?')){this.value=''}">
    <option value=''> &nbsp; </option>
    <option value="delete">Delete Everything</option>
</select>
Тарик
источник
0

Я использую этот способ (в Laravel) -

<form id="delete-{{$category->id}}" action="{{route('category.destroy',$category->id)}}" style="display: none;" method="POST">
 @csrf
 @method('DELETE')
</form>

<a href="#" onclick="if (confirm('Are you sure want to delete this item?')) {
           event.preventDefault();
           document.getElementById('delete-{{$category->id}}').submit();
         }else{
           event.preventDefault();
         }">
  <i class="fa fa-trash"></i>
</a>
Шамсул Худа
источник