使用数据属性提交表单

时间:2019-01-26 20:30:42

标签: javascript php jquery twitter-bootstrap laravel-5

请根据以下内容data-id将特定记录删除:data-id="delete-form-{{ $position->id }},但是我每次尝试都总是返回最后一个记录ID,甚至无法删除。

下面是我的代码

@forelse ($pos as $position)
               <tr>
                <td>{{ $loop->index+1 }}</td>
                <td>{{ $position->name }}</td>
                <td>{{ $position->created_at->diffForHumans() }}</a></td>
                <td><a class="btn btn-warning" href="{{ route('position.edit', $position->id) }}"><i class="fa fa-fw fa-lg fa-edit"></i>Edit</a></td>
                <td>
                    <form data-id="delete-form-{{ $position->id }}" action="{{ route('position.destroy', $position->id) }}" method="POST" style="display:none">
                        @csrf
                        @method('DELETE')
                    </form>
                    <a class="posSwal btn btn-sm btn-danger" href="" onclick="isConfirm()">
                     <i class="fa fa-fw fa-lg fa-times-circle"></i>Delete</a>
                    </td>
            </tr>

            @empty
            <p>No Record available</p>
            @endforelse

JavaScript

 <script>
$('.posSwal').click(function(){ 
    event.preventDefault();
    swal({
        title: "Are you sure?",
        text: "You will not be able to recover this imaginary file!",
        type: "warning",
        showCancelButton: true,
        confirmButtonText: "Yes, delete it!",
        cancelButtonText: "No, cancel plx!",
        closeOnConfirm: false,
        closeOnCancel: false
    }, function(isConfirm) {
        if (isConfirm) {
            $("form").data("id").submit();
            swal("Deleted!", "Your imaginary file has been deleted.", "success");
        } else {
            swal("Cancelled", "Your imaginary file is safe :)", "error");
        }
    });
});

1 个答案:

答案 0 :(得分:0)

  

但是任何时候我尝试它总是返回最后一个记录ID,甚至无法删除。

之所以发生这种情况,是因为您没有引用当前单击的锚元素。在点击处理程序中,您可以在preventDefault之前保存当前锚点:

let ele = this;

在您的小号中,您可以计算当前的id和url以便使用ajax而不是提交表单:

var id = $(ele).closest('td').find("form").data("id");
var url =  $(ele).closest('td').find("form").attr('action');
$.post(url, { id:  id });

function isConfirm() {

}

$('.posSwal').on('click', function(e){
    event.preventDefault();
    let ele = this;
    swal({
        title: "Are you sure?",
        text: "You will not be able to recover this imaginary file!",
        type: "warning",
        showCancelButton: true,
        confirmButtonText: "Yes, delete it!",
        cancelButtonText: "No, cancel plx!",
        closeOnConfirm: false,
        closeOnCancel: false
    }, function(isConfirm) {
        if (isConfirm) {
            var id = $(ele).closest('td').find("form").data("id");
            var url =  $(ele).closest('td').find("form").attr('action');
            console.log('current id is: ' + id);
            $.post(url, { id:  id });
            swal("Deleted!", "Your imaginary file has been deleted.", "success");
        } else {
            swal("Cancelled", "Your imaginary file is safe :)", "error");
        }
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/lipis/bootstrap-sweetalert@master/dist/sweetalert.css">
<script src="https://cdn.jsdelivr.net/gh/lipis/bootstrap-sweetalert@master/dist/sweetalert.min.js"></script>


<table>
    <tbody>
    <tr>
        <td>{{ $loop->index+1 }}</td>
        <td>{{ $position->name }}</td>
        <td>{{ $position->created_at->diffForHumans() }}</a></td>
        <td><a class="btn btn-warning" href="{{ route('position.edit', $position->id) }}"><i class="fa fa-fw fa-lg fa-edit"></i>Edit</a></td>
        <td>
            <form data-id="delete-form-1" action="{{ route('position.destroy', $position->id) }}" method="POST" style="display:none">
                @csrf
                @method('DELETE')
            </form>
            <a class="posSwal btn btn-sm btn-danger" href="" onclick="isConfirm()">
                <i class="fa fa-fw fa-lg fa-times-circle"></i>Delete</a>
        </td>
    </tr>
    <tr>
        <td>{{ $loop->index+1 }}</td>
        <td>{{ $position->name }}</td>
        <td>{{ $position->created_at->diffForHumans() }}</a></td>
        <td><a class="btn btn-warning" href="{{ route('position.edit', $position->id) }}"><i class="fa fa-fw fa-lg fa-edit"></i>Edit</a></td>
        <td>
            <form data-id="delete-form-2" action="{{ route('position.destroy', $position->id) }}" method="POST" style="display:none">
                @csrf
                @method('DELETE')
            </form>
            <a class="posSwal btn btn-sm btn-danger" href="" onclick="isConfirm()">
                <i class="fa fa-fw fa-lg fa-times-circle"></i>Delete</a>
        </td>
    </tr>
    </tbody>
</table>