validation - 在结帐字段国家/地区添加自定义验证
问题描述
我需要在可以使用的所有地方在国家/地区字段上添加验证。
对于注册或地址编辑,它工作正常,但在结帐时我尝试了几种方法,但没有任何效果。我想要在新的送货地址表单的字段上进行验证。
- 我在 js 文件中添加了我的验证
countryValidation.js
:
注册或编辑地址的相同脚本,它工作正常
define([
'jquery',
'jquery/ui',
'mage/validation',
'mage/translate',
'domReady!'
], function($){
'use strict';
return function(validator) {
$.validator.addMethod(
"validate-country",
function(value, element) {
if (value === "FR") {
var zipValue = $('input[name="postcode"]').val();
if (zipValue) {
return !(zipValue.startsWith("97") || zipValue.startsWith("98"));
}
}
return true;
},
$.mage.__("You cannot choose France for DOM-TOM Zip Code")
);
return validator;
}
});
requirejs-config.js
我在我的模块中注册了它:
var config = {
config: {
mixins: {
'Magento_Ui/js/lib/validation/validator': {
'Gone_Customer/js/countryValidation': true
}
}
}
};
- 为了向结帐方法添加验证,我尝试了不同的方法
-> 方法 A:使用插件
class AddCountryValidation
{
public function afterProcess(
\Magento\Checkout\Block\Checkout\LayoutProcessor $subject,
array $jsLayout
) {
// Country ID
$jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']['shippingAddress']['children']['shipping-address-fieldset']['children']['country_id']['validation']['validate-country'] = true;
return $jsLayout;
}
}
-> 方法B:在属性中添加验证规则在属性
中customer_eav_attribute
为country_id
我validate_rules
添加{"validate-country": true}
当我验证表单时,我应该有一个验证错误。
如果我遗漏了什么,你能告诉我吗?
解决方案
请试试这个
define([
'jquery',
'jquery/validate'
], function($){
'use strict';
return function(validator) {
validator.addRule(
"validate-country",
function(value) {
if (value === "FR") {
var zipValue = $('input[name="postcode"]').val();
if (zipValue) {
return !(zipValue.startsWith("97") || zipValue.startsWith("98"));
}
}
return false;
},
$.mage.__("You cannot choose France for DOM-TOM Zip Code")
);
return validator;
}
});
我使用了return false,您可以根据需要进行修改。在2.2.2版本上测试
推荐阅读
- flutter - Dart Httpclient 是否支持自定义 tls 连接?
- postgresql - 如何在 postgres psql 命令中解决这个问题?
- button - 如何在 SwiftUI 的文本块中嵌入 NavigationLink?
- ios - 如何在 Swift 中向 MKPointAnnotation 添加按钮
- python - BeautifulSoup 不能带 's 内容
- npm - 当我使用插入符号时,npm 安装了具有不同补丁版本的模块的两个版本
- javascript - 如何获取我在表格中勾选的所有详细信息?
- opencv - 我的代码是否正确进行相机校准?
- django - 如何使用 Django 表单将我的 Django 应用程序转换为正确使用表单验证?
- javascript - 为什么我得到这个错误:非法构造函数?