在提交之前手动触发活动表单验证

Ale*_*t83 7 yii2

是否可以通过javascript以编程方式调用活动表单验证?我需要在执行一些ajax操作之前调用验证过程.

Blu*_*Zed 8

猜猜我在这里回复有点晚了,但我只是有同样的问题,烧酒的解决方案也不适用于我.

所以我对ActiveForm的JS代码进行了更深入的研究,发现它似乎监视变量中每个字段的状态,如果字段"未触及",则不会触发验证,除非提交实际表单.所以我改变了我的呼吁:

var $form = $("#my-form"), 
    data = $form.data("yiiActiveForm");
$.each(data.attributes, function() {
    this.status = 3;
});
$form.yiiActiveForm("validate");
Run Code Online (Sandbox Code Playgroud)

现在这看起来像我期望的那样有效.

  • 我不确定为什么这不被接受,因为这是它按预期工作的第一件事。 (2认同)

DS9*_*DS9 6

我们可以通过合并@BlueZed和@S Rana的答案来实现这一目标.

您可以在下面编写脚本,因此我们可以检查表单是否有任何错误,然后表单将不会提交(即使它适用于表格(向导),如表格).

    var $form = $("#form"), 
        data = $form.data("yiiActiveForm");
    $.each(data.attributes, function() {
        this.status = 3;
    });
    $form.yiiActiveForm("validate");

    if ($("#form").find(".has-error").length) {
        return false;
    }
Run Code Online (Sandbox Code Playgroud)


soj*_*oju 1

是的,这是可能的,你应该尝试这个:

$('#form-id').yiiActiveForm('validate');
Run Code Online (Sandbox Code Playgroud)