Yii2 客户端表单验证

Yii2 client side form validation

我有一个 Yii2 ActiveFrom。

将提交按钮替换为

    <button class="btn <?= $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ?>"
            onclick="submitit();return false;">
        <?= $model->isNewRecord ? 'Create' : 'Update' ?>
    </button>

因为我需要在后台处理页面时显示模态叠加层。 (请稍等...)。

$('#rebates-form').yiiActiveForm('validate')

总是return未定义。

即使我打电话

$("#rebates-form").data('yiiActiveForm')

在 'validate' 之后,"validated" 元素始终为 false,即使表单没有验证错误。

$('#rebates-form').yiiActiveForm('submitForm')

始终return false,即使表单已提交。

如何触发我的请稍候对话框

$('#pleaseWaitDialog').modal('show');

仅在无验证错误的情况下显示?

以下解决方案有效:

$(document).ready(function () {
    $("#rebates-form").on("beforeSubmit", function (event, messages) {
        $('#pleaseWaitDialog').modal('show');
        return true;
    });
});

function submitit(element) {
    $('#rebates-form').yiiActiveForm('submitForm')
}

带有 submitit 函数调用的额外按钮也可以省略,因为事件 "beforeSubmit" 无论如何都会触发。

只有表单验证成功才会触发此事件。

(见 https://github.com/yiisoft/yii2/blob/master/framework/assets/yii.activeForm.js 的评论)