在WooCommerce结账页面中,当选中或取消选中“运送到不同地址”复选框时,我已经设法显示或隐藏“订单备注”字段,使用“根据WooCommerce结账中的复选框显示隐藏订单备注字段”回答我的一个问题。
我希望“订单注释”字段只有在可见时才是必需的
当此“订单注释”字段可见(而不是隐藏)时,如何使其成为必需字段并为其启用验证?
欢迎任何帮助。
以下代码将使“订单备注”字段仅在不隐藏时才需要,并在这种情况下启用字段验证。
注意(“订单注释”字段必须是可选的(就像在默认的Woocommerce中一样),否则代码将无法正常工作。
完整的代码:
// Remove "(optional)" label on "Order notes" field
add_filter( 'woocommerce_form_field' , 'remove_order_comments_optional_fields_label', 10, 4 );
function remove_order_comments_optional_fields_label( $field, $key, $args, $value ) {
// Only on checkout page for Order notes field
if( 'order_comments' === $key && is_checkout() ) {
$optional = ' <span class="optional">(' . esc_html__( 'optional', 'woocommerce' ) . ')</span>';
$field = str_replace( $optional, '', $field );
}
return $field;
}
// The jQuery script that show hide "Order notes" field
add_action( 'woocommerce_after_order_notes', 'custom_checkout_scripts_js_script', 10, 1 );
function custom_checkout_scripts_js_script( $checkout ) {
$required = esc_html__( 'required', 'woocommerce' );
?>
<script type="text/javascript">
(function($){
var required = '<abbr class="required" title="<?php echo $required; ?>">*</abbr>',
notesField = '#order_comments_field',
shipCheckbox = '#ship-to-different-address-checkbox';
function actionRequire( actionToDo='yes', selector='' ){
if ( actionToDo == 'yes' ) {
$(selector).addClass("validate-required");
$(selector+' label').append(required);
} else {
$(selector).removeClass("validate-required");
$(selector+' label > .required').remove();
}
$(selector).removeClass("woocommerce-validated");
$(selector).removeClass("woocommerce-invalid woocommerce-invalid-required-field");
}
// On load and on form change
$('form.checkout').on( 'change', shipCheckbox, function(){
if( $(this).prop('checked') === true ) {
$(notesField).hide(); // Show
actionRequire( 'no' ,notesField );
} else {
$(notesField).show(); // Hide
actionRequire( 'yes' ,notesField );
}
});
})(jQuery);
</script>
<?php
}
// "Order notes" field validation
add_action('woocommerce_checkout_process', 'order_comments_field_validation');
function order_comments_field_validation() {
if ( isset($_POST['order_comments']) && empty($_POST['ship_to_different_address']) )
wc_add_notice( __( 'Please fill in "Order notes" required field.' ), 'error' );
}
代码继续运行。活动子主题(或活动主题)的php文件。测试和工作。
类似:根据装运国家/地区将Woocommerce签出电话字段设置为可选相关:根据Woocommerce签出中的复选框显示隐藏订单注释字段
在Woocommerce中,我在Woocommerce中的账单明细之前添加了一个新的自定义结账字段?来自@LoicTheAztec,效果完美。 我有麻烦在管理订单页面显示信息。 然后,我尝试使用“添加订单元数据”来创建Commerce管理订单概述,对代码进行了一些更改以满足我的需要: 显示额外详细信息和某些字段:但不显示自定义字段值。 我还在想我到底做错了什么。关于我应该去哪里看有什么建议吗?
我遇到了这样一个问题:如何在默认情况下清空除country之外的所有WooCommerce签出字段?类似的问题,有一个答案代码,可以满足我的需要,但当客户点击结帐按钮时,该代码将清空所有woocommerce配送和账单结帐字段。 如果我只希望shipping字段为空,代码会是什么样子?
我需要在管理订单页面、谢谢和电子邮件通知中显示我的自定义签出字段。 我正在使用验证和保存WooCommerce回答代码中特定支付网关的额外结账字段来显示,验证和保存我的自定义字段。 从显示管理订单详细信息上的自定义字段数据,我试图显示自定义字段保存的输入值。 这是我到目前为止的代码: 但它不起作用。该字段不会附加到数据库中,但不会显示在任何位置: 如何正确显示字段?
大家好,我通过搜索并找到解决方案,对我在woocommerce上的结帐进行了一些编辑。 到目前为止,我已经做到了,所以我跳过购物车/篮子,直接去结账,并重命名了订单笔记文件。 我正在挣扎的是如何将订单注释字段移动到订单评论上方。我知道我需要使用这个woocommerce_checkout_before_order_review但我不知道如何使用。任何帮助都会很棒吗?
问题内容: 使用适用于Android和iOS的Phonegap 3.6.3创建移动应用程序。问题仅适用于Android,因为iOS的运行方式符合我的期望。 当我单击输入文本字段或文本区域时,将出现软键盘。它有时涵盖这些元素。 这些页面被放置在iScroll的底部,并位于另一个绝对放置的div中,因此,一旦屏幕弹出,我将无法滚动到其中任何一个页面。我怀疑键盘抬起时必须将Webview更改为较小。但是
我如何在swagger-ui.html上隐藏响应类型的描述。 springfox版本:2.8.0 springfox-ui版本:2.8.0