2017-01-02 39 views
-2

У меня есть активная форма, и я пытаюсь проверить его с помощью скрипт, написанный ниже:JS активная форма проверки в yii2

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

Проблема заключается в том, сценарий всегда возвращает ложь. Но когда я называю это второй раз с некоторой задержкой, он возвращает true.

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 автоматически проверяет форму?

+0

Вы должны рассматривать, где вы разместите код на JavaScript? – SaidbakR

+0

Я создал файл custom.js и поместил весь мой код js внутри $ (document) .ready (function() {}); –

+1

Возможный дубликат [Активная форма js-проверки в yii2] (http://stackoverflow.com/questions/41424223/active-form-js-validation-in-yii2) –

ответ

0

Простой

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

<?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