После некоторых копаний я придумал это решение. Для решения все, что вам нужно сделать, это добавить новые js, используя requirejs-config.js
. Но я создал новый модуль. Файлы модулей указаны ниже.
app\code\Vky\Core\registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vky_Core',
__DIR__
);
app\code\Vky\Core\etc\module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vky_Core" setup_version="0.0.1"/>
</config>
app\code\Vky\Core\view\frontend\requirejs-config.js
var config = {
map: {
'*': {
vky_customjs: 'Vky_Core/js/vky_custom'
}
}
};
app\code\Vky\Core\view\frontend\web\js\vky_custom.js
define([
"jquery",
"jquery/ui",
'mage/validation'
], function($) {
"use strict";
console.log('vky_custom.js is loaded!!');
//creating jquery widget
$.widget('vky_custom.js', {
_create: function() {
this._bind();
},
/**
* Event binding, will monitor change, keyup and paste events.
* @private
*/
_bind: function () {
this._on(this.element, {
'change': this.validateField,
'keyup': this.validateField,
'paste': this.validateField,
'click': this.validateField,
'focusout': this.validateField,
'focusin': this.validateField,
});
},
validateField: function () {
$.validator.validateSingleElement(this.element);
},
});
return $.vky_custom.js;
});
Теперь, где бы ваш register.phtml
файл не открывался. Добавьте несколько вещей, как показано ниже.
В конце файла добавьте это
<script type="text/x-magento-init">
{ ".v-validate": { "Vky_Core/js/vky_custom": {} } }
</script>
А затем, например, вы хотите проверить электронную почту.
Найдите тег ввода для электронной почты и добавьте класс v-validate
. Как это
<input type="email" name="email" autocomplete="email" id="email_address" value="<?= $block->escapeHtmlAttr($block->getFormData()->getEmail()) ?>" title="<?= $block->escapeHtmlAttr(__('Email')) ?>" class="input-text v-validate" data-validate="{required:true, 'validate-email':true}">
Таким образом, любой ввод с классом v-validate
будет проверен на такие события, как keyup, change, click, focusout и т. Д. Я добавил класс для всех входных тегов.
Для firstname
и lastname
в register.phtml
над этой строкой var dataForm = $('#form-validate');
Я добавил
$('#firstname').addClass('v-validate');
$('#lastname').addClass('v-validate');
Это все, что я сделал, чтобы решить мою проблему. И это работает. Вот почему выкладываю мой ответ. Может быть, это может кому-то помочь.