CakePHP Javascript确认对话框表单提交取消不起作用

时间:2011-03-28 05:38:11

标签: javascript cakephp submit confirm

使用我的CakePHP注册表单,单击“提交”按钮后,我只想显示“Javascript确认”对话框,该对话框的工作方式如下:

  • 如果按下确定,则应提交表格
  • 如果按下取消,则不应进行提交操作

但是在这里,当我按下取消时,虽然它被提交了。不知道为什么?

CakePHP表格代码:

<?php echo $form->create('Noncompetitor', array('type' => 'file', 'url' => '/register', 'onSubmit' => 'confirmfrmSubmit();'));?> 

我的JS代码:

function confirmfrmSubmit(){

    var agree=confirm("Are you sure you wish to continue?");

    if (agree)
        return true ;
    else
        return false ;
}

如果你的同事对此有所了解,请告诉我。

谢谢!

6 个答案:

答案 0 :(得分:9)

也可以使用更简单的方法,试试这个:

$this->Form->create('Request',array('onsubmit'=>'return confirm("are you sure?");'))

答案 1 :(得分:5)

更新:感谢bicycle修复我的破解回调。请参阅下文了解详情。 (而StackO的一个大覆盆子不允许答案作者对接受编辑有最终决定权。)


这是使用jQuery的解决方案:

<?php
    $this->Html->scriptBlock("
        jQuery(function($){
            $('form.noncompetitor').submit(function(event){
                if (!confirm('Are you sure?')) { return false; }
            });
        });
    ",array('inline'=>false)); // inline => false will put this snippet in the DOM's head.

    echo $this->Form->create('Noncompetitor',array(
        'type'=>'file','url'=>'/register',
        'default'=>false,'class'=>'noncompetitor'
    ));

    /* The rest of your form */

答案 2 :(得分:2)

我认为你的函数失败了,因为你实际上从来没有从confirmfrmSubmit()返回值。

尝试将返回部分添加到onSubmit字段,如下所示:

<?php echo $form->create('Noncompetitor', array('type' => 'file', 'url' => '/register', 'onSubmit' => 'return confirmfrmSubmit();'));?>

您的JS代码应该按原样工作,问题只是在调用onSubmit处理程序时,确认值永远不会传递给表单。

P.S。请注意,您可以在JS代码中执行以下操作:

return confirm("Text");

希望这有帮助。

答案 3 :(得分:1)

我找到了一个非常简单的解决方案:

<?php echo $form->create('ModelName', array('type' => 'file', 'url' => 'url', 'name' => 'frmRegister', 'onsubmit' => 'validatefrm(); return false;')); ?>

使用 onsubmit 功能,我只需定义'validatefrm();返回false;'

function validatefrm(){ // my condition, when i needs it to submitted document.frmRegister.submit(); return true; }

并发现它工作smooch:)

如果有帮助,请告诉我。

答案 4 :(得分:1)

在开始时你实际上只有99%...你只需要在调用验证函数之前添加'return'。

<?php echo $form->create('Noncompetitor', array(
       'type' => 'file', 
       'url' => '/register', 
       'onSubmit' => 'return confirmfrmSubmit();'));
?>

会这样做。

答案 5 :(得分:0)

有以下步骤: -

- 包含此jquery文件 -

echo $this->Html->css('/css/jquery-confirm.min.css', ['block' => 'css']);

创建提交按钮

<?= $this->Form->button('<i class="fa fa-check"></i><span class="hidden-xs"> ' . __('Save') . '</span>', ['type' => 'submit', 'escape' => false, 'id' => 'submit_form_id', 'class' => 'btn green', 'title' => 'Save']); ?>



$('body').on('click', '#submit_form_id', function (e) {
            e.preventDefault();
                  var submitFormVar=1;
            if (submitFormVar!= 0) {
                $.confirm({
                    title: '',
                    content: 'Do you want to stop submit form' ,
                    buttons: {
                        ok: function () {
                            $(form).submit();
                        },
                        cancel: function (o) {
                            return o;
                        }
                    }
                });
            } else {
                $(form).submit();
            }
        });

Jquery代码

  • 如果您想提交表单,则值为0
  • 如果您不想提交表单,则值为1
  • 实施您的需求逻辑