2017-02-08 2 views
0

私はjavacriptのネイティブ関数をcakephp 2.5 appに置き換えるために、sweetalertというjavascriptライブラリをインストールします。Cakephp 2とsweetalert jsはフォームデータを提出しません

私のフォームは、[はい]ボタンをクリックした後にデータを送信していません。いいえボタンをクリックすると、予想される動作があり、データは送信されません。

yesボタンを選択した場合、データが送信されるネイティブのjavascript機能としてsweet alertを使用するにはどうすればよいですか?ここで

は私のコードです:

<?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の確認機能を無効にし、regexを使用して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

form要素のonSubmit値であなたの関数を呼び出す試してみてください、プラスユーザーがキャンセルしたときのためにreturn false;を追加します。

関連する問題