js активная проверка формы в yii2

У меня есть активная форма, и я пытаюсь проверить ее, используя скрипт, написанный ниже:

jQuery("#form").yiiActiveForm("submitForm");

Проблема в том, что скрипт всегда возвращает false. Но когда я вызываю его второй раз с некоторой задержкой, он возвращает истину.

jQuery("#form").yiiActiveForm("submitForm");
setTimeout(function () {
if (jQuery("#form").yiiActiveForm("submitForm")) {
        //ajax call...    
    }
}, 300);

У меня вопрос, как валидация работает в yii2? И есть ли лучший способ проверки активных форм в JS?

Когда я использую

jQuery("#form").yiiActiveForm("submitForm");

обработчикbeforeSubmit вызывается.

$('#form').on('beforeSubmit', function (e) {
    alert('message');
});

До того, как beforeSubmit автоматически проверяет форму?

1 ответ

Просто

Вы должны попробовать это

<?php
    $this->registerJs('



            jQuery("#w0").yiiActiveForm("add",{
                "id": "customer-name",
                "name": "name",
                "container": ".field-customer-name",
                "input": "#customer-name",
                "error": ".help-block.help-block-error",
                "validate": function(attribute, value, messages, deferred, $form) {

                    yii.validation.required(value, messages, {
                        "message": "Name be blank bug."
                    });

                    yii.validation.string(value, messages, {
                        "message": "Name must be a string.",
                        "max": 255,
                        "tooLong": "Name should contain at most 255 characters.",
                        "skipOnEmpty": 1
                    });
                }
        });


    ');
 ?>

изменения

w0 into your form ID

"id": "customer-name" into your input field ID

"container": ".field-customer-name" into input field div container class
Другие вопросы по тегам