можно ли программным путем вызывать активную проверку формы через javascript? Мне нужно вызвать процедуру проверки перед выполнением некоторых операций ajax.активировать проверку активной формы вручную перед отправкой
ответ
Да, это возможно, вы должны попробовать это:
$('#form-id').yiiActiveForm('validate');
Guess Я немного опоздал с ответом здесь, но я только что был один и тот же вопрос, и решение по сочжу не работает для меня тоже ,
Итак, я посмотрел немного глубже в JS-код ActiveForm и обнаружил, что он, по-видимому, контролирует состояние каждого поля в переменной, и если поле «нетронутое», проверка не запускается, за исключением того, фактическая форма. Поэтому я поменял мой звонок на это:
var $form = $("#my-form"),
data = $form.data("yiiActiveForm");
$.each(data.attributes, function() {
this.status = 3;
});
$form.yiiActiveForm("validate");
Это, похоже, работает так, как я ожидаю.
Я не уверен, почему это не принято, потому что это первое, что работает, как и ожидалось. – Edna
Благодаря голубой зет, но перед этим - для добавления поля формы, и нужно, чтобы сделать этот материал ...
// ваш вход
$inputData = $form->field($model,"prductName");
// это удалить следующую строку & преобразовать двойные кавычки на одинарные
$newInputData= trim(preg_replace('/\s+/', ' ',str_replace('"',"'", $inputData)));
// затем добавить как этот
$("#table").append("'.$newInputData.'");
// это работает для меня вместе с синим раствором ZEND, как это ниже
$this->registerJs('
$(document).on("click","input[type=text]",function(){
var $form = $("#w0"),
data = $form.data("yiiActiveForm");
$.each(data.attributes, function() {
this.status = 3;
});
$form.yiiActiveForm("validate");
});
');
это работает для меня
$this->registerJs("
$('body').on('beforeSubmit', 'form#product-form', function() {
var form = $(this);
// return false if form still have some validation errors
if (form.find('.has-error').length) {
return false;
}
// submit form
$.ajax({
url: form.attr('action'),
type: 'post',
data: form.serialize(),
success: function (response) {
}
});
return false;
}); ");
Мы можем добиться того, что в результате слияния @BlueZed и @S Ответ Раны.
Вы можете написать ниже сценарий, поэтому мы можем проверить, что если форма имеет какие-либо ошибки в нем, тогда форма не будет отправлена (Even It будет работать для табличных (волшебников), подобных форме).
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;
}
Валидация активируется при отправке формы. Таким образом, это будет работать:
$form.data('yiiActiveForm').submitting = true;
$form.yiiActiveForm('validate', false);
Второй аргумент validate
называется forceValidate
.
Для проверки вручную из javascript, вы должны поместить следующий код в конец формы отправить событие.
return $('#your-form-id').yiiActiveForm('validate');
Для начинающих пользователей,
$('#your-form-id').submit(function() {
return $('#your-form-id').yiiActiveForm('validate');
});
Также обратите внимание, что вы должны указать идентификатор формы на ActiveForm
, как показано ниже
<?php $form = ActiveForm::begin(['id' => 'd4d-hub-form']); ?>
Я была такая же проблема. И явное разрешение в официальной документации я не понимаю, и я не знаю, почему какое-либо решение для Stackoverflow не работает для меня. Может быть в разных версиях yii2 есть разные способы сделать это. Я потратил много времени, чтобы найти решение. В моем случае я вызвал проверки для отдельного входа в форме:
$('#form-id').data('yiiActiveForm').submitting = false;
$('#form-id').yiiActiveForm('validateAttribute', 'input-id'); //this will triger validation for input with id 'input-id'
$('#form-id').yiiActiveForm('validateAttribute', 'other-input-id'); //this will triger validation for input with id 'other-input-id'
пожалуйста обратите внимание второй параметр функции yiiActiveForm() не селектор, и это не имя атрибута является идентификатор ввода атрибута! !!
- 1. Выполните проверку формы перед отправкой - jQuery
- 2. Перед отправкой формы программно
- 3. Проверка формы перед отправкой
- 4. Проверка формы перед отправкой
- 5. Формы заголовков перед отправкой
- 6. Подтвердить перед отправкой формы
- 7. Вручную вызывать проверку формы HTML5
- 8. jQuery: Как сделать проверку в jquery перед отправкой формы?
- 9. Могу ли я активировать проверку ngMessages вручную?
- 10. jQuery: Ajax перед отправкой формы
- 11. Изменение данных формы перед отправкой
- 12. рассчитать расстояние перед отправкой формы
- 13. проверить чекбокс перед отправкой формы?
- 14. хэш-пароль перед отправкой формы
- 15. Проверка поля перед отправкой формы
- 16. Предварительная проверка формы перед отправкой
- 17. Toggle checkbox перед отправкой формы
- 18. Добавить элемент перед отправкой формы
- 19. Проверка полей формы перед отправкой
- 20. ошибки формы django перед отправкой
- 21. JQuery функция ПЕРЕД отправкой формы
- 22. Confirm тзд перед отправкой формы
- 23. валидация перед отправкой формы ajax
- 24. Обновить страницу перед отправкой формы
- 25. условие перед отправкой php-формы
- 26. Шифрование пароля перед отправкой формы
- 27. Закрытие страницы перед отправкой формы
- 28. Изменить данные перед отправкой формы
- 29. Выполнение javascript перед отправкой формы
- 30. Загрузите файл перед отправкой формы
Привет, благодарю вас за ответ. Я пробовал вышеуказанный код, но я все еще не могу выполнить проверку формы. Ошибки javascript не возвращаются, и если я попытаюсь предупредить результат, он дал мне «undefiend». – AleCat83
Этот метод проверяет входные данные формы и отображает соответствующие ошибки, он ничего не вернет ... – soju
Могу ли я загрузить некоторые другие конфигурации или активы, чтобы они работали? Я попытался запустить вышеуказанный код (с моим идентификатором формы), но проверка не выполняется. – AleCat83