2014-10-29 4 views
12

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

ответ

17

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

'onsubmit' => 'return ConfirmDelete()' 
+0

EXCELENT! Благодаря! – David

+0

приветствую :) – lukasgeiter

+0

Огромное спасибо, за ссылки это было легко через «подтверждение данных» Laravel, но это было в тупике. – malhal

0

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

Что вы можете сделать, это создать только ссылку, которая в свою очередь создает форму в js. Like what they're doing here (only with JQuery)

3

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

Простой положить JQuery код окне подсказки, когда представить форму или удалить запись.

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

работает отлично, спасибо –

2

В моем новом проекте (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' => 'вернуться confirmDelete()' иначе у меня были некоторые проблемы, когда Я закрываю предупреждение, не подтверждая вопрос.

JavaScript:

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

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

Просто верните 'результат' – peter

1

без каких-либо вызовов функций ...

'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

0

Просто думал, что я бы обобщать это из бит:

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