Вопрос давнишний, но тем не менее опубликую свой вариант решения (с помощью эмулирования отправки формы).
Нативная реализация не позволяет гибко управлять реализацией валидации форм на клиенте - всё слишком заточено на отправку одной формы.
var validationEnabled = false,
$form = $('#form_id');
/**
* Validates form.
* Note: after first successful validation of form this state of form will be cached (this is yii.activeForm.js-native feature).
* @param {Function} callback Function as first argument passes result of validation.
*/
function validateForm(callback) {
if (!validationEnabled) {
$form.on('submit', function () {
var $form = $(this),
yiiFormData = $form.yiiActiveForm('data');
callback(yiiFormData.validated);
return false; // we stop submitting of form (we submit only for performing of validation)
});
validationEnabled = true; // don't use of .one(handler), because it can't prevent form submitting
}
$form.trigger('submit'); // this runs validation of form
}
// ... do something
validateForm(function (successValidated) {
if (successValidated) {
// ... do something
}
});
* Можно конечно еще проще обмануть виджет, типа форма отправилась (но там результат валидации выковыривать сложнее):
$form.yiiActiveForm('data').submitting = true;
$form.yiiActiveForm('validate');