仅在可见时才需要 Woocommerce 结帐字段
Posted
技术标签:
【中文标题】仅在可见时才需要 Woocommerce 结帐字段【英文标题】:Woocommerce checkout field required only if visible 【发布时间】:2016-01-10 23:49:47 【问题描述】:我正在尝试将 woocommerce 结帐中的“业务”字段设为必需,但仅当该字段实际显示时。
我使用 woocommerce_form_field 创建了一个单选按钮字段,该字段显示两个选项。使用javascript I切换“Business”输入字段的可见性,当检查单选按钮时:
jQuery(document).ready(function ()
$('input[type=radio][name=customer_type]').on('change', function ()
$('.checkout-bedrijfsnaam').slideToggle();
); );
“业务”输入的默认 css 是:
.checkout-bedrijfsnaam display:none;
我还使用 Woocommerce 过滤器“woocommerce_billing_fields”和“woocommerce_shipping_fields”创建了所需的“业务”字段:
$address_fields['billing_company']['required'] = true;
这一切都很好,但是:当“业务”字段被关闭且未显示时,我收到“必填字段”警告并且无法提交表单。是否可以将字段设为必填,但仅在实际显示时?
我知道必须如此,因为 shipping_fields 上的字段的行为方式相同(未选中复选框时不需要),但我无法理解它。
【问题讨论】:
然后尝试有条件地创建该文件,这将使您的工作完成,或者如果它有任何过滤器,请尝试使用它来有条件地要求它。 该字段是在服务器端创建的,条件是客户端(选择了哪个单选按钮),所以我认为这不是一个选项 现在我正在使用“woocommerce_checkout_process”操作来进行服务器端验证并在验证失败时调用 wc_add_notice。但这样做的缺点是 UI 不一致(没有星号/红色边框表示该字段是必填的) 【参考方案1】:如果检查只是客户端,那么您可能希望将其从 DOM 中删除,而不是使用 display: none;
隐藏它。当你需要它时,你再次附加它。你已经有了它的开关。
【讨论】:
以上是关于仅在可见时才需要 Woocommerce 结帐字段的主要内容,如果未能解决你的问题,请参考以下文章
php [使用操作和过滤器自定义结帐字段] WooCommerce自定义结帐字段不需要电话号码示例。
仅在商店中用 woocommerce 中的贝宝结帐替换添加到购物车按钮