4

使用我的 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 ;
}

各位大侠有什么想法请告诉我。

谢谢 !

4

6 回答 6

10

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

$this->Form->create('Request',array('onsubmit'=>'return confirm("are you sure?");'))
于 2011-07-13T06:57:19.360 回答
5

更新:感谢自行车修复我损坏的回调。详情见下文。(对于 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 */
于 2011-03-28T15:07:37.747 回答
2

我认为您的函数失败了,因为您实际上从未从 confirmfrmSubmit() 返回值。

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

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

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

PS注意,您可以在JS代码中执行以下操作:

return confirm("Text");

希望这可以帮助。

于 2012-03-22T11:11:30.430 回答
1

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

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

使用onsubmit函数,我简单地定义了'validatefrm(); 返回错误;'

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

并发现它工作顺利:)

让我知道,如果它对你有帮助。

于 2011-03-31T08:36:33.697 回答
1

一开始你实际上已经完成了 99% 的工作......你只需要在调用验证函数之前添加“return”。

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

会做的。

于 2012-08-01T16:11:39.373 回答
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
  • 实现为您的需求逻辑
于 2018-05-08T09:12:57.330 回答