web-dev-qa-db-fra.com

Confirmer la suppression avec le formulaire laravel?

Problème avec la confirmation de suppression, tout fonctionne bien, mais si vous cliquez sur Annuler dans la fenêtre de confirmation, cela supprimera l'élément de la base de données. Des idées? S'il vous plaît montrer avec exemple de code, je suis nouveau à Laravel.

<script>

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

</script>

{!! Form::open(['method' => 'DELETE', 'route' => ['path_delete_time', $time->id], 'onsubmit' => 'ConfirmDelete()']) !!}

  {!! Form::hidden('case_id', $project->id, ['class' => 'form-control']) !!}

  {!! Form::button('<i class="glyphicon glyphicon-trash"></i>', array('type' => 'submit', 'class' => 'specialButton')) !!}

{!! Form::close() !!}
14
David

Ajoutez simplement return à votre appel onsubmit. la valeur renvoyée par la fonction détermine donc si le formulaire est soumis ou non.

'onsubmit' => 'return ConfirmDelete()'
23
lukasgeiter

Simple mettre du code jQuery pour la boîte d’invite lors de la soumission du formulaire ou de la suppression d’un enregistrement.

jQuery(document).ready(function($){
     $('.deleteGroup').on('submit',function(e){
        if(!confirm('Do you want to delete this item?')){
              e.preventDefault();
        }
      });
});
4
Dhaval Tailored
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
        $(".specialButton").click(function(){
            return confirm("Do you want to delete this ?");
        });
    </script>
4
Jeet Thaker

Vous pouvez donner un identifiant au formulaire et utiliser jQuery:

 {!! Form::open(['method' => 'DELETE', 'route' => ['path_delete_time', $time->id], 'id' => 'FormDeleteTime']) !!}

   <script type="text/javascript">
     $("#FormDeleteTime").submit(function (event) {
                 var x = confirm("Are you sure you want to delete?");
                    if (x) {
                        return true;
                    }
                    else {

                        event.preventDefault();
                        return false;
                    }

                });
</script>
3
Laura Chesches

Dans mon nouveau projet (Laravel 5.3), j'utilise les éléments suivants: 

{!! Form::open(['method' => 'DELETE', 'route' => ['admin.user.delete', $user], 'onsubmit' => 'return confirmDelete()']) !!}
    <button type="submit" name="button" class="btn btn-default btn-sm">
        <i class="fa fa-trash-o"></i>
    </button>
{!! Form::close() !!}

Mentionnez le 'onsubmit' => 'return confirmDelete ()' sinon, je rencontrais des problèmes lorsque je fermais l'alerte sans confirmer la question.

JavaScript:

function confirmDelete() {
    return confirm('Are you sure you want to delete?');
}
2
Dieter Casier

sans appel de fonction ...

'onsubmit' => 'return confirm("are you sure ?")'

exemple 

            {!! Form::open(['url'=>'posts/'.$post->id.'/delete','method'=>'DELETE','class'=>'form-horizontal',
        'role'=>'form','onsubmit' => 'return confirm("are you sure ?")'])!!}

en utilisant laravel 5

1
Hos Mercury

Je sais que cela fait un moment, mais c’est de la manière la plus douce qui soit:

'onsubmit' => 'return confirm("Do you want to delete this user?");'

dans la balise de formulaire.

0
James Bailey

Je pensais que je généraliserais un peu ceci:

.html

<form method="post" action="..." class="has-confirm" data-message="Delete this Thing?">...</form>

.js

$("form.has-confirm").submit(function (e) {
  var $message = $(this).data('message');
  if(!confirm($message)){
    e.preventDefault();
  }
});
0
khany

La seule chose qui se passe actuellement est que vous obtenez une fenêtre contextuelle qui retarde la redirection vers la page de suppression. 

Ce que vous pourriez faire, c'est générer uniquement un lien qui, à son tour, génère un formulaire en js. Comme ce qu'ils font ici (uniquement avec JQuery)

0
Daniel Gelling