2015-05-23 3 views
3

Я пробовал sweeAlert плагин, который отлично работает, но я не могу понять, как сделать материал по умолчанию после подтверждения.sweetAlert preventDefault и return true

$(document).ready(function() { 
function handleDelete(e){ 
    e.preventDefault(); 
    swal({ 
     title: "Are you sure?", 
     text: "You will not be able to recover the delaer again!", 
     type: "warning", 
     showCancelButton: true, 
     confirmButtonColor: "#DD6B55", 
     confirmButtonText: "Yes, delete!", 
     closeOnConfirm: false 
    }, 
    function (isConfirm) { 
     if (isConfirm) { 
      return true; 
     } 
    }); 
}; 
}); 

и кнопка

<a href="{plink delete! $row->id_dealers}" class="delete" onclick"handleDelete(event);">&nbsp;</a> 
//{plink delete! $row->id_dealers} Nette -> calls php delete handler 

Я также попытался unbind() и off() вместо return false, не работает. Раньше я использовал confirm() с return true и return false в атрибуте onclick, он работает, но выглядит ужасно.

+0

событие уже было остановлено из-за 'e.preventDefault();' так * по умолчанию вещи * будет не более продолжительная работа. – Dhiraj

+0

Да, я знаю. Вот почему я задаю здесь решение :) – kristyna

ответ

4

Вы можете попробовать что-то вроде этого

$(document).ready(function() { 
    $('.delete').on('click',function(e, data){ 
    if(!data){ 
     handleDelete(e, 1); 
    }else{ 
     window.location = $(this).attr('href'); 
    } 
    }); 
}); 
function handleDelete(e, stop){ 
    if(stop){ 
    e.preventDefault(); 
    swal({ 
     title: "Are you sure?", 
     text: "You will not be able to recover the delaer again!", 
     type: "warning", 
     showCancelButton: true, 
     confirmButtonColor: "#DD6B55", 
     confirmButtonText: "Yes, delete!", 
     closeOnConfirm: false 
    }, 
    function (isConfirm) { 
     if (isConfirm) { 
     $('.delete').trigger('click', {}); 
     } 
    }); 
    } 
}; 

Вот демонстрационный http://jsbin.com/likoza/1/edit?html,js,output

Другим способом является использование формой вместо href.

Разметка будет выглядеть следующим образом

<form action=""> 
    <input type="submit" ...... /> 
</form> 

и вместо window.location = $(this).attr('href'); вы можете просто сказать form.submit()


Update

Если имеется несколько элементов на странице, то триггер может быть используется как этот

Не

Вот демо http://output.jsbin.com/likoza/2

+0

Блестящий! Вы сохраняете мой день, спасибо :) – kristyna

+0

Для тех, у кого есть несколько ссылок с тем же классом, не забывайте, что $ ('. Delete'). Trigger ('click', {}); не относится к элементу с кликом, а ко всем элементам с классом = «удалить». – kristyna

+0

@kikinet Если имеется несколько элементов, вы можете использовать '$ (e.target) .trigger ('click', {});'. Обновлен мой ответ с другой демонстрацией. – Dhiraj

1

Вот как я это сделал:

$('.delete').on('click', function(e) { 
    e.preventDefault(); 
    var currentElement = $(this); 

    swal({ 
      title: "Are you sure?", 
      text: "You will not be able to recover the delaer again!", 
      type: "warning", 
      showCancelButton: true, 
      confirmButtonColor: "#DD6B55", 
      confirmButtonText: "Yes, delete!", 
      closeOnConfirm: false 
     }, 
     function() { 
      window.location.href = currentElement.attr('href'); 
     } 
    ); 
}); 
Смежные вопросы