Magento 2 - Оформить заказ aria - неверно= "ложно"
Я не уверен, ошибка это или я веду себя глупо. То, чего я пытаюсь достичь, заключается в оформлении заказа и вводе следующего:
Aria-недопустимый= "null"
Однако я заметил, что при начальной загрузке проверки каждый ввод на странице загружает
Aria-недопустимый= "ложный"
Это можно увидеть здесь:
Галочки указывают, что значение равно false, однако внутри этих элементов нет никакого содержимого.
Я хочу, чтобы значение фактически возвращало null при первой загрузке, а затем использовало Ko.observable, чтобы сказать, должно ли это быть:
Верно - есть ошибка (она пуста)
Ложь - все в порядке
Я порыскал вокруг и обнаружил, что файл находится здесь:
/vendor/magento/module-ui/view/frontend/web/templates/form/element/input.html
И возвращает следующее:
<input class="input-text" type="text" data-bind="
value: value,
valueUpdate: 'keyup',
hasFocus: focused,
attr: {
name: inputName,
placeholder: placeholder,
'aria-describedby': getDescriptionId(),
'aria-required': required,
'aria-invalid': error() ? true : 'false',
id: uid,
disabled: disabled
}" />
Я дошел до этого этапа и попытался найти четную/функцию для "ошибки()", но я заблудился в кроличьей норе.
Если у кого-нибудь есть какие-либо советы по этому поводу, это было бы здорово.
2 answers
У меня нет рабочего блока M2, который, по крайней мере, 2.2
, когда я думаю, что aria-invalid
был представлен, поэтому я не могу заглянуть в него, кроме кодовой базы, но я предполагаю, что это происходит.
-
input.html
вызывается изvendor/magento/module-checkout/view/frontend/web/template/shipping-address/form.html:13
-
form.html
вызывается изvendor/magento/module-checkout/view/frontend/web/js/view/shipping.js:61
-
shipping.js
вызывается изvendor/magento/module-checkout/view/frontend/layout/checkout_index_index.xml:119
- Это приводит к компоненту
shipping-address
-vendor/magento/module-checkout/view/frontend/layout/checkout_index_index.xml:92
, и именно здесь определяются области.
Это ужасный лабиринт, и я несколько раз заблудился, так что я вероятно, пропущенные части, мое мышление - это то, что по пути подсказывает этим входным данным использовать vendor/magento/module-ui/view/base/web/js/form/element/abstract.js
, но я не подтвердил это.
Я полагаю, что именно отсюда вызывается функция ошибки.
Существуют подобные функции, которые изменяют состояние this.error()
.
/**
* Sets value observable to initialValue property.
*
* @returns {Abstract} Chainable.
*/
reset: function () {
this.value(this.initialValue);
this.error(false);
return this;
},
Надеюсь, это укажет вам правильное направление, я мог бы быть далеко, так как это чертовски сложно и чрезмерно спроектировано, но именно там я бы начал искать. Предупреждение о том, что изменение abstract.js
, вероятно, повлияет на множество других функциональность.
Удачи!
Итак, чтобы ответить на мой собственный вопрос. Да, @бен прав. Тот abstract.js это подходящее место для поиска. Однако сюжет усложняется.
Aria-недопустимый может возвращать только следующие значения:
- ложь (по умолчанию) Ошибок не обнаружено
- грамматика Обнаружена грамматическая ошибка. написание A
- обнаружена орфографическая ошибка.
- истина Значение не прошло проверку.
Похоже, что вы не можете вернуть значение null в aria атрибут. Дох. Так что же делать?
Кажется, что на содержащем div есть наблюдаемые объекты, это кричало "отредактируйте меня", поэтому добавьте к следующему в аннотации:
/**
* Extends 'additionalClasses' object.
*
* @returns {Abstract} Chainable.
*/
_setClasses: function () {
var additional = this.additionalClasses;
if (_.isString(additional)) {
this.additionalClasses = {};
if (additional.trim().length) {
additional = additional.trim().split(' ');
additional.forEach(function (name) {
if (name.length) {
this.additionalClasses[name] = true;
}
}, this);
}
}
_.extend(this.additionalClasses, {
_required: this.required,
_error: this.error,
_complete: this.value, <- adding this
_warn: this.warn,
_disabled: this.disabled
});
console.log(this);
return this;
},
Добавление
_ complete: это.значение,
Позволил мне добавить класс в родительский div, и при изменении входного значения с true на false класс добавляется. Я не уверен, что это должен быть запрос на вытягивание? Я не уверен, что все желают этого так же, как я.
Надеюсь, все, кому нужно эта функциональность, надеюсь, это поможет.