2014-10-29 13 views
12

Problem z potwierdzeniem usunięcia, wszystko działa dobrze, ale jeśli klikniesz przycisk anuluj w potwierdzeniu, usunie element z DB. Jakieś pomysły? Proszę pokazać z przykładowym kodem, jestem nowy w laravel.Potwierdź usunięcie za pomocą formularza w formacie 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() !!} 

Odpowiedz

17

Po prostu dodaj ponownie do swojego połączenia onsubmit. więc wartość zwracana przez funkcję określa, czy formularz zostanie przesłany, czy nie.

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

EXCELENT! Dzięki! – David

+0

serdecznie zapraszamy :) – lukasgeiter

+0

wielkie dzięki, dla linków to było łatwe dzięki "potwierdzeniu danych" Laravel, ale to było zbanowane. – malhal

0

Jedyne, co dzieje się teraz, to pojawienie się wyskakującego okienka, które opóźnia przekierowanie na stronę usuwania.

Co możesz zrobić, to wygenerować tylko link, który z kolei generuje formularz w js. Like what they're doing here (only with JQuery)

3

Można nadać postaci identyfikatora i używać 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

Proste umieścić kod jQuery do natychmiastowego polu gdy Złożenie lub usunięcie wpisu.

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

działa idealnie, dzięki –

2

W moim nowym projekcie (laravel 5.3) Używam następujący:

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

Należy wymienić 'onsubmit' => 'powrócić confirmDelete()' inaczej miałem pewne problemy podczas Zamykam alert bez potwierdzania pytania.

JavaScript:

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

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

Po prostu zwróć 'wynik' – peter

1

bez wywołania funkcji ...

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

przykład

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

użyciu laravel 5

0

tylko, że chciałbym generalizować tego OUT bit:

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