magento 2: запуск проверки формы js без отправки
На пользовательской странице интерфейса у меня есть форма, в которой я использую проверку js magento для проверки входных данных: имя, описание электронной почты и т.д. Когда форма отправлена, проверка запускается и работает должным образом. Мне интересно, есть ли способ вручную вызвать проверку js magento, не требуя действия "отправить".
Вот что я использую для применения проверки
var dataForm = $('#form-validate');
var ignore = null;
dataForm.mage('validation', {
ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
}).find('input:text').attr('autocomplete', 'off');
И я ищу
$("#form-validate").mageValidate(); // validate form fields
Дайте мне знать, если вам понадобится больше подробно.
2 answers
Смог выяснить это, обратившись к:
module-checkout-agreements/view/frontend/web/js/model/agreement-validator.js
После включения mage/validation
вы должны передать аргумент isValid
в mage.validation, чтобы вызвать проверку
Полный код выглядит как
require([
'jquery',
'mage/validation'
], function($){
var dataForm = $('#form-validate');
var ignore = null;
dataForm.mage('validation', {
ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
}).find('input:text').attr('autocomplete', 'off');
$('button#my-button').click( function() { //can be replaced with any event
dataForm.validation('isValid'); //validates form and returns boolean
});
});
Вы также можете заменить аргумент на clearError
, чтобы удалить сообщения об ошибках проверки
Вы можете попробовать это:
require(["jquery"], function ($) {
$(document).ready(function () {
$('#my-button-name').click(function () { // The button type should be "button" and not submit
if ($('#form-name').valid()) {
alert("Validation pass");
return false;
}else{
alert("Validation failed");
return false;
}
});
});
});
Надеюсь, это может вам помочь!