仅在可见时才需要 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 中的贝宝结帐替换添加到购物车按钮

Woocommerce 中特定支付网关的结帐附加字段

添加隐藏字段以结帐并通过订单处理

根据发货国家/地区将 Woocommerce 结帐电话字段设为可选

Wordpress - 单选按钮结帐 woocommerce 显示/隐藏必填字段