【发布时间】:2015-01-23 02:27:37
【问题描述】:
我在使用 Yii2 使用表单外的按钮提交和验证表单时遇到问题。
这是我的情况:
我有一个表单 (myForm) 和该表单内的提交按钮 (myButton)。当我单击 myButton 时,将执行验证,如果验证失败,则不执行提交。当然,这是意料之中的,而且有效。
但是,我真正想要的是通过单击表单元素之外的 myButton 来提交 myForm。为此,我只需调用 jQuery('myForm').submit(),然后提交就可以了。
我在最后一种情况下面临的问题是验证失败但表单尚未提交,这是意料之中的。
如何提交带有表单外按钮的表单,并同时进行验证?
这是我的看法:
<?php
$form = ActiveForm::begin([
'validateOnSubmit' => true,
'type' => ActiveForm::TYPE_VERTICAL,
'options' => ['class' => 'main-task-form']
]);
echo Form::widget([
'model' => $modelData,
'form' => $form,
'columns' => 2,
'attributes' => [
'closeDate' => [
'type'=> 'widget',
'widgetClass'=> DatePicker::className(),
'options'=>[
'type' => DatePicker::TYPE_COMPONENT_APPEND,
'pluginOptions' => [
'autoclose' => true,
'language' => 'es',
'format' => 'dd-mm-yyyy',
'todayBtn' => 'linked',
],
],
],
'descriptionClose' => [
'type'=>'textarea',
'options' => [
'rows' => 3,
],
],
],
]);
?>
<?php ActiveForm::end() ?>
<!-- Form Ends Here -->
<!-- Submit Button Outside Form -->
<?= Html::button('Completar Tarea', ['class' => 'btn btn-primary btn-task-form']) ?>
这是告诉表单外的按钮触发提交的 Javascript 代码:
function assignCompleteButtonToTaskForm ()
{
var completeButton = jQuery ('button.btn-task-form')[0];
var mainTaskForm = jQuery ('form.main-task-form')[0];
completeButton.onclick = function (e) {
mainTaskForm.submit ();
}
}
对此有什么想法吗?
另外,如何在手动执行提交之前直接触发验证过程?也许这将有助于我控制提交过程。
【问题讨论】:
标签: javascript php jquery form-submit yii2