Comment afficher un message de confirmation avant de le supprimer?

204

Je souhaite obtenir un message de confirmation en cliquant sur supprimer (il s'agit peut-être d'un bouton ou d'une image). Si l'utilisateur sélectionne « Ok», la suppression est effectuée, sinon, si « Cancel» est cliqué, rien ne se passe.

J'ai essayé de faire écho à cela lorsque le bouton a été cliqué, mais en écho, mes boîtes de saisie et mes zones de texte perdent leur style et leur design.

Shyam K
la source

Réponses:

330

Écrivez ceci en onclickcas de bouton:

var result = confirm("Want to delete?");
if (result) {
    //Logic to delete the item
}
Ved
la source
réponse brillante! court, précis et efficace
John
Pour toute personne non expérimentée en JavaScript, vos lignes de code ne signifient rien, l'exemple semble peu concluant et déroutant. Néanmoins, c'est une bonne réponse.
Samuel Ramzan
Je pense que vous devriez ajouter quelques détails à votre réponse. Pourquoi insérez-vous le code à l'intérieur du bouton au lieu de l'écrire dans la section head ou dans un fichier externe? C'est une fonction très générique et le programmeur voudra peut-être l'utiliser plusieurs fois pour plusieurs boutons, je ne l'
écrirais
286

Vous pouvez mieux utiliser comme suit

 <a href="url_to_delete" onclick="return confirm('Are you sure you want to delete this item?');">Delete</a>
Raghav Rach
la source
2
Cela devrait être très haut dans le fil. Simple, rapide, efficace. Fait le travail parfaitement.
DonExo
Très dangereux! Et si Javascript a été désactivé? Ou si un robot araignée / recherche lirait cette page? Il faudrait alors suivre tous les liens et tout supprimer! Certains plugins de navigateur suivent également tous les liens d'une page pour la mettre en pré-cache. Ne faites JAMAIS de cette façon! Les suppressions ne doivent jamais être une demande GET.
Daniele Testa
Ce n'est pas moins dangereux que la réponse n ° 1, tout JavaScript est dangereux si JavaScript est désactivé. L'activation ou la désactivation de JavaScript est un choix personnel de l'utilisateur.Si JavaScript est désactivé, l'utilisateur doit savoir qu'il ne faut appuyer sur aucun bouton sur aucun site Web. Il y a toujours une vérification côté serveur comme une merveilleuse alternative.
Samuel Ramzan
53

C'est ainsi que vous le feriez avec du JavaScript discret et le message de confirmation étant conservé dans le HTML.

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

Il s'agit de pure vanille JS, compatible avec 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');
      }
  });
}

Voyez-le en action: http://codepen.io/anon/pen/NqdKZq

DevAntoine
la source
Cela fonctionne parfaitement, mais ne fonctionne que pour le premier bouton. Et si nous en avons 20 ou plus? Merci!
emotality
1
Vous avez raison, c'est parce que querySelector ne correspond qu'au premier élément. J'ai édité la réponse et bifurqué le codepen pour utiliser querySelectorAll à la place.
DevAntoine
Ce serait cool si cet exemple était édité pour fonctionner aussi avec JavaScript désactivé, par exemple href="https://stackoverflow.com/delete"serait suffisant je pense. Ou un exemple de formulaire de soumission.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 C'est déjà le cas grâce à la fonction event.preventDefault (). Vous pouvez remplacer le caractère de hachage par une URL, il ne sera pas déclenché. Mais, si JavaScript est désactivé, le lien fonctionnera comme prévu.
DevAntoine
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 Et voilà;)
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
la source
Je pense qu'il vaut mieux n'avoir qu'un seul point de retour. donc je préfère
jedi
17
Ou tout simplement return confirm("…"). Il n'est pas nécessaire d'affecter une variable booléenne, puis de la brancher sur if / else.
slhck
16

Essaye ça. Ça marche pour moi

 <a href="delete_methode_link" onclick="return confirm('Are you sure you want to Remove?');">Remove</a>
Shuhad zaman
la source
1
Beau et efficace.
Samuel Ramzan
13

c'est très simple et une ligne de code

<a href="#" title="delete" class="delete" onclick="return confirm('Are you sure you want to delete this item')">Delete</a>
Mohammed Muzammil
la source
Il semble qu'il y ait déjà une réponse comme celle-ci juste en dessous de la réponse acceptée.
chapeau
12

amélioration sur user1697128 (parce que je ne peux pas encore commenter)

<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>

annulera la soumission du formulaire si vous appuyez sur Annuler

Jaxx0rr
la source
8

Je voudrais offrir la façon dont je fais cela:

<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>
zéros et uns
la source
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
la source
4

HTML:

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

Utilisation de jQuery:

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

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

    if (choice) {
        window.location.href = $(this).attr('href');
    }
});
julionc
la source
Une bonne adaptation jQuery de la réponse DevAntoines ( stackoverflow.com/a/19973570/1337887 ). Cependant, une approche un peu plus généralisée consisterait à utiliser "$ ('A [data-confirm]')" au lieu de "$ ('. Delete')". De cette façon, vous n'avez pas besoin des boutons pour avoir une classe de suppression, mais intégrez simplement l'attribut de confirmation de données.
Florian
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>
himos
la source
3

Entraine toi

<form name=myform>
<input type=button value="Try it now" 
onClick="if(confirm('Format the hard disk?'))
alert('You are very brave!');
else alert('A wise decision!')">
</form>

Web original:

http://www.javascripter.net/faq/confirm.htm

KingRider
la source
3

Si vous êtes intéressé par une jolie solution rapide avec le format CSS fait, vous pouvez utiliser 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
la source
2

définir un message de conformation lorsque vous supprimez quelque chose dans php & mysql ...

utilisez ce code de script:

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

utilisez ce code html:

<a onclick="return Conform_Delete()" href="#">delete</a>
ashik
la source
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!";
}

gauravbhai daxini
la source
1

Utilisation de jQuery:

$(".delete-link").on("click", null, function(){
        return confirm("Are you sure?");
    });
Apeli
la source
1

Je sais que c'est vieux, mais j'avais besoin d'une réponse et non, mais la réponse d' Alpesh a fonctionné pour moi et voulait partager avec des gens qui pourraient avoir le même problème.

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

Version normale:

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

Ma version PHP:

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

Ce n'est peut-être pas la bonne façon de le faire publiquement, mais cela a fonctionné pour moi sur un site privé. :)

émotivité
la source
1

C'est très simple

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();
        }
    })
}
Amir karim
la source
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
la source
0
<SCRIPT LANGUAGE="javascript">
function Del()
{
var r=confirm("Are you sure?")
if(r==true){return href;}else{return false;}
}
</SCRIPT>

votre lien pour cela:

<a href='edit_post.php?id=$myrow[id]'> Delete</a>
Azat
la source
0

Le gestionnaire onclick doit retourner false après l'appel de fonction. Par exemple.

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

Amit
la source
0

Je pense que la solution la plus simple et discrète serait:

Lien:

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

Javascript:

$('.delete').click(function () {
    return confirm("Are you sure?");
});
Cookalino
la source
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
la source
0

Voici un autre exemple simple en JS pur utilisant className et un événement de liaison.

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>

Arun Sharma
la source
0
<script>
function deleteItem()
{
   var resp = confirm("Do you want to delete this item???");
   if (resp == true) {
      //do something
   } 
   else {
      //do something
   }
}
</script>

appeler cette fonction en utilisant onClick

Pranav VR
la source
0

Pour "message de confirmation lors de la suppression", utilisez:

                       $.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;
                        }
Arvind Upadhyay.
la source
0

Angularjs avec Javascript Delete Exemple

Code 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" est une variable angularjs supposons que vous vouliez passer n'importe quel paramètre pendant l'action de suppression

Code angularjs à l'intérieur du module d'application

$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
la source
0

Il est beaucoup plus difficile de le faire pour certaines cases d'option. Voici la solution:

<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>
Tarik
la source
0

J'utilise de cette façon (en 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>
Shamsul Huda
la source