如何使自定义字段有条件地禁用?

35g0bw71  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(170)

目前,我为本地拾取选项设计了一些功能。其中一个功能是,当选中“用户本地取货”选项时,将存在一个自定义字段,供客户选择要取货的商店。

add_action( 'woocommerce_review_order_before_payment', 'store_select' );
function store_select ( $checkout ) {
    echo '<div id="show-if-shipping-store-pickup"><h3>Store Pickup 分店自取</h3>';

   woocommerce_form_field( 'store_pickup_selection', array(
        'type'          => 'select',
        'class'         => array('store_select'),
        'required'      => true,
        'label'         => __('Select Store'),
        'options'        => array(
            'blank' => __('Select a store', 'store_pickup' ),
            'Causeway Bay' => __('Causeway Bay', 'store_pickup' ),
            'Tsim Sha Tsui' => __('Tsim Sha Tsui', 'store_pickup' ),
            'Tsuen Wan' => __('Tsuen Wan', 'store_pickup' )
        )
            ));

   echo '</div>';

}

但是,当客户选择其他选项(如统一费率或免费送货)时,尽管jquery隐藏了自定义表单,但无法处理 checkout 过程。由于我的设置,表格是必需的。
下面是我在选择其他配送方式(免费配送和固定费率)时隐藏自定义表单的代码。

add_action( 'woocommerce_after_checkout_form', 'bbloomer_show_hide_timeslot' );

function bbloomer_show_hide_timeslot( $available_gateways ) {

?>

<script type="text/javascript">
     // ||val.match("free_shipping:11") || val.match("flat_rate:8")
   function show_timeslot( val ) {
      if ( val.match("local_pickup:9")) {
         jQuery('#show-if-shipping-timeslot').fadeIn();
      } else {
         jQuery('#show-if-shipping-timeslot').fadeOut();
      }   
   }

   jQuery(document).ajaxComplete(function() {
       var val = jQuery('input[name^="shipping_method"]').val();

      show_timeslot( val );
   });

</script>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题