javascript Magento 2退房日期:仅在提交时应用自定义字段验证规则

wqsoz72f  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(91)

在Magento CE2.4.5中,我为STREET字段添加了一个自定义验证。如果该字段同时包含文本和数字,则需要进行验证,因为许多客户忘记提交他们的门牌号:

'validate-housenumber': [
        function (value) {
            return utils.isEmptyNoTrim(value) || /^[A-Za-z]+[ ]+[0-9]/.test(value);
        },
        $.mage.__('Please enter a house number')
    ],

出于测试原因,我在中添加了此代码:

  • Magento/用户界面/视图/基本/Web/js/库/验证/规则.js*

并在中添加了验证规则:

  • checkout _索引_索引.xml*
<item name="validation" xsi:type="array">
<item name="validate-housenumber" xsi:type="string">true</item>
</item>

然而,当开始在字段中键入任何内容时,验证会立即发生。我需要以下解决方案之一:

**(a)**离开字段后出现验证消息(所需)
**(B)**点击按钮进入下一个结账步骤后,出现验证消息(就像未填写必填字段时发生的情况一样)

任何提示都是非常受欢迎的。谢谢你的帮助!
亚历克斯

vhmi4jdf

vhmi4jdf1#

最后我在另一个线程中找到了解决方案。感谢 Tailtiu
https://magento.stackexchange.com/questions/278554/trigger-checkout-validation-only-on-change-event
使用这个解决方案,验证工作如预期。但是,出于测试原因,我将验证应用于 company 字段,而不是 street 字段:

<item name="company" xsi:type="array">
  <item name="validation" xsi:type="array">
    <item name="validate-housenumber" xsi:type="string">true</item
  </item>                                                               
  <item name="config" xsi:type="array">
    <item name="elementTmpl" xsi:type="string">Vendor_Module/form/element/inputhousenumbercheck</item></item>                                                       
</item>

这很好用,但是当应用到字段street.0而不是company字段时,出现了一个问题:在前端,街道字段不能再被访问。

**更新:**据我所知,街道字段不能通过xml访问。相反,它必须通过插件完成:

Magento\Checkout\Block\Checkout\LayoutProcessor

相关问题