如果未选择“自定义选择”字段,则禁用woocommerce下订单按钮

奥米德·托拉比(Omid Toraby)

我已经将选择自定义字段添加到woocommerce结帐页面:

// Add custom checkout datepicker field
 
add_action( 'woocommerce_before_order_notes', 'checkout_display_datepicker_custom_field' );
function checkout_display_datepicker_custom_field( $checkout ) {
    
    echo '<div id="datepicker-wrapper" style="width:50%;">';
    
       $field_id = 'my_datepicker';
       $today = strtotime('today');
       $tomorrow = strtotime('tomorrow');
    
     woocommerce_form_field(  $field_id, array(
        'type'          => 'select',
        'class'         => array('form-row-wide'),
        'label' => __('Delivery Date'),
        'placeholder'   => __('Select Delivery Date'),
        'required' => true, // Or false
        'onchange' => 'ValidateDropDwon(this)',
        'options'     => array(
            '' => '',
            date(('d F Y'), $today ) => date(('d F Y'), $today ),
            date(('d F Y'), $tomorrow ) => date(('d F Y'), $tomorrow ),
        )));

     echo '<br></div>';
     
    
}

并使用此jQuery检查是否选择了选择字段中的一项,然后启用“下订单”按钮:

jQuery(document).ready( function(){
function ValidateDropDwon(dd){
  var input = document.getElementById('place_order')
  if(dd.value == '') input.disabled = true; else input.disabled = false;
}

});

但它不起作用,“下订单”按钮始终处于活动状态!我真的不知道为什么它不起作用!?

Lexa Vey

确保调用了函数

添加console.log('Im call ValidateDropDwon')内部函数,ValidateDropDwon然后重新加载页面。

例如:

function ValidateDropDwon(dd){
  console.log('Im call ValidateDropDwon')
  var input = document.getElementById('place_order')
  if(dd.value == '') input.disabled = true; else input.disabled = false;
}

F12打开浏览器控制台,然后Im call ValidateDropDwon在浏览器控制台中看到

根据您的问题,ValidateDropDwon不调用函数

检查HTML输出

让我们检入PHP的HTML输出

日期选择器输出

<div id="datepicker-wrapper" style="width:50%;">
   <p class="form-row form-row-wide validate-required" id="my_datepicker_field" data-priority="">
      <label for="my_datepicker" class=""> Delivery Date &nbsp;<abbr class="required" title="required" aria-required="true">*</abbr></label>
      <span class="woocommerce-input-wrapper">
         <select name="my_datepicker" id="my_datepicker" class="select select2-hidden-accessible enhanced" data-allow_clear="true" data-placeholder=" Delivery Date & Time" required="required" tabindex="-1" aria-hidden="true" aria-required="true">
            <option value="" selected="selected"></option>
            <option value="1">31-Dec-2020 From 13 to 17</option>
            <option value="2">01 Jan 2021 From 13 to 17</option>
         </select>
         <span class="select2 select2-container select2-container--default" dir="rtl" style="width: auto;"><span class="selection"><span class="select2-selection select2-selection--single" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-labelledby="select2-my_datepicker-container" role="combobox"><span class="select2-selection__rendered" id="select2-my_datepicker-container" role="textbox" aria-readonly="true"><span class="select2-selection__placeholder"> Delivery Date & Time</span></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span></span></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>
      </span>
   </p>
   <br>
</div>

下订单按钮输出

<button type="submit" class="button alt" name="woocommerce_checkout_place_order" id="place_order" value="Place Order" data-value="Place Order"> Place Order</button>
<ul role="menu" aria-label="Pagination">
   <li class="" aria-disabled="false" style=""><a href="#previous" role="menuitem">Previous</a></li>
   <li aria-hidden="true" aria-disabled="true" class="disabled" style="display: none;"><a href="#next" role="menuitem" style="outline: none;">Next</a></li>
   <li aria-hidden="false" style=""><a href="#finish" role="menuitem" class="finish-btn">Place Order</a></li>
</ul>

看,您的PHP有,'onchange' => 'ValidateDropDwon(this)',onchangeid为select的属性不存在my_datepicker

因此,问题在于PHP在执行后未显示onchange属性,默认情况下也不禁用html按钮,有很多方法可以解决此问题,从PHP修复,从HTML修复,从JavaScript修复。

我将解释JavaScript的修复

通过JavaScript修复

更改时创建JavaScript事件

$('#my_datepicker').change(function () { ... }

此事件的工作,但现在我们有新的问题,因为按钮是不是默认是禁用的,我们首先需要禁用按钮,同时页面加载,我们可以利用load事件来关闭按钮,但我们可以结合事件load,并change解决方案

我正在使用jQuery 3.4.1

$(document).ready(function(){
    $('#my_datepicker').bind('change', function () {
        if($(this).val() != ''){ // if value is not empty, enable button
          $("#place_order").attr("disabled", false);
        }else{
            $("#place_order").attr("disabled", true); // if empty disable button
        }
    });
    $('#my_datepicker').trigger('change'); // event `change` on page `load`
});

检查https://jsfiddle.net/lexavey/t9oj43g6/26/工作代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择行时启用自定义按钮(默认情况下禁用)

来自分类Dev

选择自定义订单中的位置

来自分类Dev

使用自定义Woocommerce付款网关对“下订单按钮”进行JavaScript覆盖

来自分类Dev

订单自定义字段未显示在WooCommerce电子邮件通知中

来自分类Dev

选择另一个自定义字段时启用/禁用自定义字段

来自分类Dev

在Woocommerce查看订单页面上显示自定义字段

来自分类Dev

Wordpress WooCommerce管理自定义订单字段

来自分类Dev

自定义元素未选择属性

来自分类Dev

从 Woocommerce 结帐中的自定义产品字段值中填写选择字段选项

来自分类Dev

自定义操作按钮进入WooCommerce管理订单列表上的自定义列

来自分类Dev

自定义订单详细信息页面上的Woocommerce自定义字段

来自分类Dev

如何在WooCommerce订单中显示产品自定义字段(自定义SKU)

来自分类Dev

在选择WooCommerce产品变动价格后添加自定义字段值

来自分类Dev

在WooCommerce中添加和处理自定义结帐选择字段时出现问题

来自分类Dev

Woocommerce在“谢谢”页面上获得自定义选择字段值

来自分类Dev

如果选择了特定类别,是否可以在结帐页面上隐藏自定义下拉字段

来自分类Dev

如果自定义字段等于页面标题,则自动选择父页面

来自分类Dev

NSIS-如果未选择任何组件,则禁用“卸载”按钮

来自分类Dev

NSIS-如果未选择任何组件,则禁用“卸载”按钮

来自分类Dev

如果未选择任何选项,则禁用按钮angularJS

来自分类Dev

默认情况下未选择自定义分类模板

来自分类Dev

仅在WooCommerce Admin单个订单的手动订单中显示产品自定义字段

来自分类Dev

WooCommerce中的自定义订单操作

来自分类Dev

Woocommerce 新订单自定义主题

来自分类Dev

如果选择了选项,则显示自定义内容

来自分类Dev

PhoneGap中HTML选择框的自定义按钮

来自分类Dev

Flutter-自定义切换按钮选择

来自分类Dev

自定义UITableViewCell按钮已选择-重新加载数据

来自分类Dev

jQuery Mobile:在自定义选择的末尾添加关闭按钮

Related 相关文章

  1. 1

    选择行时启用自定义按钮(默认情况下禁用)

  2. 2

    选择自定义订单中的位置

  3. 3

    使用自定义Woocommerce付款网关对“下订单按钮”进行JavaScript覆盖

  4. 4

    订单自定义字段未显示在WooCommerce电子邮件通知中

  5. 5

    选择另一个自定义字段时启用/禁用自定义字段

  6. 6

    在Woocommerce查看订单页面上显示自定义字段

  7. 7

    Wordpress WooCommerce管理自定义订单字段

  8. 8

    自定义元素未选择属性

  9. 9

    从 Woocommerce 结帐中的自定义产品字段值中填写选择字段选项

  10. 10

    自定义操作按钮进入WooCommerce管理订单列表上的自定义列

  11. 11

    自定义订单详细信息页面上的Woocommerce自定义字段

  12. 12

    如何在WooCommerce订单中显示产品自定义字段(自定义SKU)

  13. 13

    在选择WooCommerce产品变动价格后添加自定义字段值

  14. 14

    在WooCommerce中添加和处理自定义结帐选择字段时出现问题

  15. 15

    Woocommerce在“谢谢”页面上获得自定义选择字段值

  16. 16

    如果选择了特定类别,是否可以在结帐页面上隐藏自定义下拉字段

  17. 17

    如果自定义字段等于页面标题,则自动选择父页面

  18. 18

    NSIS-如果未选择任何组件,则禁用“卸载”按钮

  19. 19

    NSIS-如果未选择任何组件,则禁用“卸载”按钮

  20. 20

    如果未选择任何选项,则禁用按钮angularJS

  21. 21

    默认情况下未选择自定义分类模板

  22. 22

    仅在WooCommerce Admin单个订单的手动订单中显示产品自定义字段

  23. 23

    WooCommerce中的自定义订单操作

  24. 24

    Woocommerce 新订单自定义主题

  25. 25

    如果选择了选项,则显示自定义内容

  26. 26

    PhoneGap中HTML选择框的自定义按钮

  27. 27

    Flutter-自定义切换按钮选择

  28. 28

    自定义UITableViewCell按钮已选择-重新加载数据

  29. 29

    jQuery Mobile:在自定义选择的末尾添加关闭按钮

热门标签

归档