【问题标题】:delete confirmation in laravel在 laravel 中删除确认
【发布时间】:2016-01-04 05:59:49
【问题描述】:

我有以下代码:

@foreach($results as $result)
  <tr>
    <td>{{$result->my_id}}</td>
    <td>{{$result->province_name}}</td>
    <td>{{$result->city_name}}</td>
    <td>
      <a class="btn btn-primary" href="{{route('city-edit', $result->my_id)}}"><i class="fa fa-edit"></i></a>
      <a class="btn btn-danger" href="{{route('city-delete', $result->my_id)}}"><i class="fa fa-trash"></i></a>
    </td>
  </tr>
@endforeach

如何在删除每条数据时添加确认?

【问题讨论】:

  • 只需添加onclick="return confirm('Are you sure?')"。查看我的帖子以获得完整的答案。

标签: javascript php laravel


【解决方案1】:

我更喜欢更简单的方法,只需添加onclick="return confirm('Are you sure?')",如下所示:

<a class="btn btn-danger" onclick="return confirm('Are you sure?')" href="{{route('city-delete', $result->my_id)}}"><i class="fa fa-trash"></i></a>

【讨论】:

  • 即使这段代码更短,您也应该考虑使用事件委托并将此操作实现为Unobtrusive JavaScript
  • 如何在“”上编写脚本??是“ ??
  • 您在另一个单引号中使用了一对单引号,这不起作用。请将单对引号包含在双引号内,反之亦然:&lt;a onclick="return confirm('Are you sure?')"&gt;&lt;a onclick='return confirm("Are you sure?")'&gt;
  • 简单有效。极好的。记住孩子们,完成胜于完美:-)
  • 我怎样才能以这种方式使用甜蜜警报???这是甜蜜警报的网址。 link
【解决方案2】:

如果这是您的链接:

<a href="#" class="delete" data-confirm="Are you sure to delete this item?">Delete</a>

使用这个 Javascript:

var deleteLinks = document.querySelectorAll('.delete');

for (var i = 0; i < deleteLinks.length; i++) {
    deleteLinks[i].addEventListener('click', function(event) {
        event.preventDefault();

        var choice = confirm(this.getAttribute('data-confirm'));

        if (choice) {
            window.location.href = this.getAttribute('href');
        }
    });
}

注意:&lt;a&gt; 需要class 中的delete。 此解决方案使用 Unobtrusive JavaScript 并且应该适用于 IE 9 或更高版本。

【讨论】:

    【解决方案3】:
      <a class="btn btn-danger" onclick="return myFunction();" href="{{route('city-delete', $result->my_id)}}"><i class="fa fa-trash"></i></a>
    
    <script>
      function myFunction() {
          if(!confirm("Are You Sure to delete this"))
          event.preventDefault();
      }
     </script>
    

    【讨论】:

    • 这个动作可以通过事件委托不显眼地完成。请停止使用突兀的 Javascript 并停止在任何地方放置 onclick
    • 感谢您的信息 Peh. 如果我使用 jquery 选择器使用类 .click 事件进行同一进程
    • 我相信你也可以用 jquery 实现同样的效果。但是您应该确保将内容和代码分开,这是通过使用data-confirm 属性而不是将确认文本硬编码到javascript中来完成的。
    【解决方案4】:
    <a href="{{ route('city-delete', $result->my_id) }}" 
       class="btn btn-danger" data-method="DELETE" data-confirm="Are you sure?"> Delete</a>
    

    使用brexis/laravel-data-method 包,您可以指定适当的HTTP 方法和确认文本。

    如果您在路线文件中包含此内容,这将很有帮助:

    Route::get('cities/{city}', 'CityController@show')->name('city-show');
    Route::delete('cities/{city}', 'CityController@destroy')->name('city-delete');
    

    【讨论】:

      【解决方案5】:

      如果这是您的链接:

      <a href="{{route('venuepropertyarea.delete', ['propertyarea' => $propertyareaname->id])}}" data-method="DELETE" data-confirm="Are you sure to delete this item?" class="btn btn-danger btn-xs pull-right delete"><i class="fa fa-trash"></i> </a>
      

      路线:

      Route::get('/icrm/venues/property_area/delete/{propertyarea}', 'VenuePropertyAreaController@deletepropertyarea')->name('venuepropertyarea.delete');
      

      使用这个 Javascript:

      var deleteLinks = document.querySelectorAll('.delete');
      
      for (var i = 0; i < deleteLinks.length; i++) {
          deleteLinks[i].addEventListener('click', function(event) {
              event.preventDefault();
      
              var choice = confirm(this.getAttribute('data-confirm'));
      
              if (choice) {
                  window.location.href = this.getAttribute('href');
              }
          });
      }
      

      注意:&lt;a&gt; 需要class 中的delete。 此解决方案使用 Unobtrusive JavaScript 并且应该适用于 IE 9 或更高版本。

      【讨论】:

        【解决方案6】:

        index.blade.php

        <form action="{{route('todos.destroy', $todo->Id)}}" method="post">
                      <input type="hidden" name="_method" value="DELETE">
                      @csrf
              <button id="btnDelete"class="btn btn-danger btn-sm">Delete</button>
             </form>
        <script type="javascript">
               document.onsubmit=function(){
                   return confirm('Sure?');
               }
        </script>
        

        我使用的是纯 PHP 表单,方法 DELETE 必须在提交页面操作中作为隐藏传递,所以我通过 javascript 捕获它并收到确认警报。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-24
          • 2021-02-25
          • 1970-01-01
          • 2020-03-10
          • 1970-01-01
          • 2020-03-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多