我确实安装了 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/