Sweet Alert с Codeigniter для событий удаления

У меня проблемы с попыткой заставить приятные оповещения работать с моим кодом codeigniter, с индексом моего клиентского модуля, который у меня есть (часть кода):

<table class="table table-striped">
    <tr>
		<td>ID</td>
		<td>Empresa</td>
		<td>Contacto</td>
		<td>RNC</td>
		<td>Telefono</td>
		<td>Email</td>
		<td>Acciones</td>
    </tr>
	<?php foreach($clientes as $c): ?>
    <tr>
		<td><?php echo $c['id']; ?></td>
		<td><?php echo $c['empresa']; ?></td>
		<td><?php echo $c['contacto']; ?></td>
		<td><?php echo $c['rnc']; ?></td>
		<td><?php echo $c['telefono']; ?></td>
		<td><?php echo $c['email']; ?></td>
		<td>
            <a href="<?php echo site_url('clientes/edit/'.$c['id']); ?>" class="btn btn-info">Editar</a> 
            <a href="<?php echo site_url('clientes/delete/'.$c['id']); ?>" class="btn btn-danger">Eliminar</a>
            <a href="<?php echo site_url('clientes/view/'.$c['id']); ?>" class="btn btn-danger">Ver</a>

        </td>
    </tr>
	<?php endforeach; ?>

</table>

Тогда у меня в js это:

$('#AlertaEliminarCliente').on("click", function() {
  swal({
      title: "Está seguro?",
      text: "No podrá recuperar el cliente una vez sea eliminado!",
      type: "warning",
      showCancelButton: true,
      confirmButtonColor: '#DD6B55',
      confirmButtonText: 'Si, Eliminarlo!',
      cancelButtonText: "No, Cancelar!",
      confirmButtonClass: "btn-danger",
      closeOnConfirm: false,
      closeOnCancel: false
    },
    function(isConfirm) {
      if (isConfirm) {
        swal("Eliminado!", "Su cliente ha sido eliminado!", "success");
      } else {
        swal("Cancelado", "Su cliente está a salvo! :)", "error");
      }
    });
});

Как я могу добавить идентификатор #AlertaEliminarCliente к моей кнопке

я попытался добавить его, и он просто удалил строку, не запрашивая подтверждения и т. д. из сладкого оповещения, есть ли что-то, чего мне не хватает? любое руководство действительно ценится, спасибо, парень, за твое время!


person Carlos Sanchez    schedule 08.11.2015    source источник


Ответы (2)


Нажатие на кнопку приведет пользователя к URL-адресу clientes/delete/'.$c['id'] независимо от взаимодействия пользователя со сладким оповещением. Вам нужно изменить свой jQuery, чтобы предотвратить изменение URL-адреса, и перенаправлять пользователя только по его выбору сладкого предупреждения.

$('#AlertaEliminarCliente').on("click", function(e) {
  e.preventDefault();
  var url = $(this).attr('href');
  swal({
      title: "Está seguro?",
      text: "No podrá recuperar el cliente una vez sea eliminado!",
      type: "warning",
      showCancelButton: true,
      confirmButtonColor: '#DD6B55',
      confirmButtonText: 'Si, Eliminarlo!',
      cancelButtonText: "No, Cancelar!",
      confirmButtonClass: "btn-danger",
      closeOnConfirm: false,
      closeOnCancel: false
    },
    function(isConfirm) {
      if (isConfirm) {
        swal("Eliminado!", "Su cliente ha sido eliminado!", "success");
        window.location.replace(url);
      } else {
        swal("Cancelado", "Su cliente está a salvo! :)", "error");
      }
    });
});

Вы можете установить тайм-аут, чтобы все еще отображалось последнее сообщение перед изменением URL-адреса.

setTimeout(function(){ window.location.replace = url; }, 2000);

Последнее замечание: если вы собираетесь использовать этот метод более чем для одного элемента на странице, вам следует использовать .AlertaEliminarCliente, а не #AlertaEliminarCliente.

person Tristan    schedule 08.11.2015
comment
сработало изменение класса вместо идентификатора, изменение метода на .AlertaEliminarCliente сработало отлично! большое спасибо, ребята! - person Carlos Sanchez; 08.11.2015
comment
а для тайм-аута это работало так: window.setTimeout(function(){ window.location.replace(url); } ,2000); Спасибо еще раз! - person Carlos Sanchez; 08.11.2015

Чтобы остановить действие по умолчанию (удаление), поставьте event.preventDefault(); в начале вашей функции. Это предотвратит действие кнопки (или ссылки).

$('#AlertaEliminarCliente').on("click", function(event) {
  event.preventDefault();
  swal({...

Кроме того, я не вижу, чтобы у вас был элемент с идентификатором AlertaEliminarCliente. Я думаю, вы хотите это в этой строке кода.

<a href="<?php echo site_url('clientes/delete/'.$c['id']); ?>" 
    class="btn btn-danger" id="AlertaEliminarCliente">Eliminar</a>
person DFriend    schedule 08.11.2015
comment
Я добавил preventDefault, и он удаляет строку без каких-либо предупреждений, что не предотвращает действие. - person Carlos Sanchez; 08.11.2015