javascript - Cakephp 2和sweetalert js不提交表单数据

标签 javascript cakephp

我确实安装了 javascript 库 sweetalert将确认 JavaScript native 函数替换为 cakephp 2.5 应用程序

单击"is"按钮后,我的表单未提交数据。当单击任何按钮时,我会出现预期的行为,但不会提交数据。

如果我选择"is"按钮,如何使用 Sweet Alert 作为确认 native 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>

最佳答案

这会覆盖确认 JavaScript 函数,使用正则表达式查找存储在 html 中的 post 值,并在确认后发布它。取消后,则不会。可以更改当前设置为删除的其他内容。

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'
            )
        }
    })
};

关于javascript - Cakephp 2和sweetalert js不提交表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112086/

相关文章:

javascript - 如何让 VS Code 识别返回 React 的 HTML 语法

php - 有效管理数据变更

php - 尝试填充数据库,cakephp 由于插入而未保存

mysql - 将评论与自己联系起来

cakephp - Find() 以数组为条件 : Undefined offset: 1

javascript - 使用 Kinetic.js 创建矩形的放置区域

javascript - 无法从 Promise 中获取值(value)

javascript - 如何在 Draft.js 中对齐文本

javascript - Array.concat 反射(reflect)连接后修改输入嵌套数组时结果数组的变化

php - CakePHP 3 - 多条件查找