根据提交按钮启用或禁用表单验证

时间:2019-11-14 10:00:14

标签: javascript php cakephp cakephp-2.0

我实际上是在CakePHP 2.x中这样做的。

<?php echo $this->Form->create('Product', array('url' => array('controller' => 'products', 'action' => 'add'), 'id' => 'form-add')); ?>

<?php echo $this->Form->input("title", array("div" => false, "label" => false, 'class' => 'form-control', 'required'=>true)); ?>

<?php  echo ($this->Form->input('description', array('type' => 'textarea', 'rows' => '6','div'=>false, 'label'=>false, 'placeholder'=>__('Description...'), "class" => "form-control Description", 'required'=>true)));?>

<button class="btn" type="submit" id="submitSaveDraft">Save Draft</button>

<button class="btn" type="submit" id="submitSave">Save</button>

<?php echo $this->Form->end(); ?>

我有一个包含一些字段和两个提交按钮的表单。一个提交按钮是“保存草稿”,另一个只是标准的“保存”。

1)如果单击“保存”按钮,页面将验证表单上的所有输入,即,如果未填写必填字段,将提示消息,并且表单将不提交。

2)现在,我要实现的是:单击“保存草稿”按钮时,我希望页面忽略所有必填字段(“标题”字段除外),然后继续提交表单。这是因为我们只保存草稿,所以除了“标题”以外的所有字段都不是必需的。

如何在上面保存草稿功能的同时达到数字(2)?

谢谢。

3 个答案:

答案 0 :(得分:0)

首先,我建议将对Product模型的默认验证限制为仅标题。这样一来,草稿表单即可提交,而不会自动添加HTML5验证。其余的验证可以设置为其他产品模型类var,稍后再使用,例如$save_validation

接下来,使用JS表单提交处理程序,将提交类型(例如,保存或保存草稿)发送到控制器(可能带有单击按钮后更改的隐藏输入)。

在处理已发布数据的控制器代码中,您可以检查您所处的情况,对于submitSave情况,通过合并$validate来设置模型的$validate数组,然后$save_validation(当然要先保存)。现在,您拥有完整的验证集,并且仅在需要时应用。

答案 1 :(得分:0)

绕过验证。

$this->model->save($data, ['validate' => false]));

答案 2 :(得分:0)

只需删除“保存草稿按钮”的提交类型