2017-02-08 11 views
0

Я устанавливаю библиотеку javascript sweetalert, чтобы заменить встроенную функцию javascript, в приложение cakephp 2.5.Cakephp 2 и sweetalert js не отправляют данные формы

Моя форма не отправляет данные после нажатия кнопки «Да». При нажатии кнопки нет ожидаемого поведения, данные не отправляются.

Как я могу использовать сладкое предупреждение как подтверждение собственной функции javascript, где данные отправляются, если я выбираю кнопку «Да»?

Вот мой код:

<?php 
//at default.ctp : 
     echo $this->Html->css(array('sweetalert/sweetalert')); 
     echo $this->fetch('css'); 
     echo $this->Html->script(array('sweetalert/sweetalert','sweetalert/sweetalert.min')); 

    //at the form : 
    //echo $this->Form->submit('Save', array('div'=>true, 'name'=>'save', 'value' => true, 'onclick'=>'return confirm("Confirm data editing?");')); 
    echo $this->Form->submit('Save', array('div'=>true, 'name'=>'save', 'value' => true, 'onclick'=>'return isConfirm()')); 
    echo $this->Form->end(); 
    ?> 
    <script> 
     swal({ 
       title: "Are you sure?", 
       text: "you can always edit later!", 
       type: "warning", 
       showCancelButton: true, 
       confirmButtonClass: "btn-danger", 
       confirmButtonText: "Yes, edit the data!", 
       cancelButtonText: "No, cancel please!", 
       closeOnConfirm: false, 
       closeOnCancel: false 
      }, 
      function(isConfirm) { 

       if (isConfirm) { 
        console.log(isConfirm); 
        swal("Edited!", "data has been edited.", "success"); 
       } else { 
        console.log(isConfirm); 
        swal("Cancelo", "data has not been edited :)", "error"); 
       } 
     }); 
    </script> 

ответ

1

Это переопределяет функцию подтверждения javascript, использует регулярное выражение для поиска значения сообщения, хранящегося в html, и отправляет его, если оно подтверждено. В случае отмены, это не так. Его можно изменить для других вещей, которые в настоящее время настроены для удаления.

window.confirm = function(message) { 

    console.log(message); 
    console.log(this.document.activeElement.outerHTML); 
    var html = this.document.activeElement.outerHTML; 
    var finale = false; 
    var returnVal = false; 

    swal({ 

     title: 'Are you sure?', 
     text: 'Are you sue you want to delete this item?', 
     type: 'warning', 
     showCancelButton: true, 
     confirmButtonColor: '#3085d6', 
     cancelButtonColor: '#d33', 
     confirmButtonText: 'Yes, delete it!' 

    }).then(function() { 

     var post = html.match(/(document.post_)(.*)(submit\(\);)/g); 
     eval(post[0]) 

    }, function(dismiss) { 
     if (dismiss === 'cancel') { 
      swal(
       'Cancelled', 
       'File was not deleted', 
       'error' 
      ) 
     } 
    }) 
}; 
1

Try вызов вашей функции в onSubmit значения form элемента, а также добавить return false;, когда пользователь отменяет.

 Смежные вопросы

  • Нет связанных вопросов^_^