Yii2 使用 javascript 验证 ActiveForm

Yii2 validate an ActiveForm with javascript

我有一个可用的活动表单,可以通过 Yii 提交和验证 PHP。但是,我想在单击 Next 按钮时确定表单是否有效。

我可以通过这个向用户传递错误信息:

$("#form").yiiActiveForm("validate", true);

但是这个函数没有return任何东西;我不知道是否确实有任何错误。我试过这个:

$error_count = document.getElementsByClassName("help-block").length

但这行不通;在 UI 更新之前计算错误。如果我再次按下按钮,第二次,那么 error_count 就是我所期望的。

这似乎没有做任何事情:

$("#form").yiiActiveForm("validate");

我也试过这个:

$('#form').on('afterValidate', function (event, messages, errorAttributes) {}

但这只是事后触发,所以我不确定该怎么做。

如有任何建议,我们将不胜感激。

如果您需要对按钮做出反应,您只需将这两个事件结合起来:

let isNextClicked = false;

$('.next-btn').on('click', function(e) {
    e.preventDefault();
    isNextClicked = true;
    $("#form").yiiActiveForm("validate", true);
});

$('#form').on('afterValidate', function(event, messages, errorAttributes) {
    if (!isNextClicked) {
        //validation wasn't triggered by clicking next
        return;
    }

    // reset the state
    isNextClicked = false;

    if (errorAttributes.length > 0) {
        //there are errors so we won't let user to continue
        //we can also show some alert() here
        return;
    }
    
    // ... code to show the next tab of form ...
});