Подтвердите удаление с помощью формы laravel?

проблема с confirm delete, все работает нормально, но если вы нажмете "отмена" во всплывающем окне подтверждения, он удалит элемент из БД. Есть идеи? Покажите с примером кода, я новичок в 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() !!}

9 ответов


просто добавьте return в свой onsubmit звонок. таким образом, значение, возвращаемое функцией, определяет, будет ли форма отправлена или нет.

'onsubmit' => 'return ConfirmDelete()'

простой код jQuery для окна запроса при отправке формы или удалении записи.

jQuery(document).ready(function($){
     $('.deleteGroup').on('submit',function(e){
        if(!confirm('Do you want to delete this item?')){
              e.preventDefault();
        }
      });
});

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

вы можете дать форме идентификатор, и использовать 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>

в моем новом проекте (Laravel 5.3) я использую следующее:

{!! 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() !!}

отметить 'onsubmit' = > ' return confirmDelete ()' в противном случае у меня были некоторые проблемы, когда я закрываю предупреждение, не подтверждая вопрос.

JavaScript:

function confirmDelete() {
var result = confirm('Are you sure you want to delete?');

if (result) {
        return true;
    } else {
        return false;
    }
}

без функции звонков ...

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

пример

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

использование laravel 5


единственное, что происходит прямо сейчас, это то, что вы получаете всплывающее окно, которое задерживает перенаправление на страницу удаления.

то, что вы можете сделать, это только создать ссылку, которая в свою очередь генерирует форму в js. как то, что они делают здесь (только с JQuery)


просто подумал, что я бы обобщил это немного:

.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();
  }
});

Я знаю, что прошло некоторое время, но это самый гладкий способ IMO:

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

в теге form.