【问题标题】:Why are my 'min' and 'max' form functions not working?为什么我的“最小”和“最大”表单功能不起作用?
【发布时间】:2019-06-14 04:52:46
【问题描述】:

我制作了一个自定义表单以显示在 Wordpress Woocommerce 结帐页面中,用户必须在购买前选择他们的年龄。

这个想法是为了让 18 岁以下的人无法购买。

目前,代码显示表单并且一切都设置好了,但是我需要将年龄插入限制在 18 到 99 岁之间的“最小”和“最大”功能由于某种原因不适用。 我需要什么才能应用“最小”和“最大”函数?

add_action('woocommerce_after_order_notes', 'custom_checkout_field');

function custom_checkout_field($checkout)
{
    echo '<div id="custom_checkout_field"><h3>' . __('Vanusepiirang') . '</h3>';

    woocommerce_form_field('custom_field_name', array(
        'type'      => 'number',
        'id'        => 'vanusepiirang',
        'name'      => 'vanusepiirang',
        'min'       =>  18,
        'max'       =>  99,
        'required'  =>  1,
        'class'     => array(
            'my-field-class form-row-wide'
        ),
        'label'     => __('Sisestage enda vanus. Teie sünnipäeva küsime kinnituseks, et olete piisavalt vana ostukorvis olevate toodete ostmiseks.') ,
        'placeholder' => __('Teie vanus') ,
    ),

    $checkout->get_value('custom_field_name'));
    echo '</div>';
}

我希望表单上应用“最小”和“最大”功能,这样数字 1-17 就无法通过。

【问题讨论】:

    标签: php arrays forms max min


    【解决方案1】:

    用另一种解决方案帮助自己解决了问题:)

    将此添加到我的“空字段检查功能”中:

    else if ($_POST['custom_field_name'] < ('18'))
        wc_add_notice(__('Te pole piisavalt vana nende toodete ostmiseks!') , 'error');
    else if ($_POST['custom_field_name'] > ('99'))
        wc_add_notice(__('Palun sisesta korrektne vanus!') , 'error');
    

    【讨论】:

      【解决方案2】:

      根据woocommerce_form_field 函数定义,maxmin 属性必须作为custom_attribute 传递。您的最终代码必须修改如下:

      add_action('woocommerce_after_order_notes', 'custom_checkout_field');
      
      function custom_checkout_field($checkout)
      {
          echo '<div id="custom_checkout_field"><h3>' . __('Vanusepiirang') . '</h3>';
      
          woocommerce_form_field('custom_field_name', array(
              'type'      => 'number',
              'id'        => 'vanusepiirang',
              'name'      => 'vanusepiirang',
              'custom_attributes' => array(
                  'min'       =>  18,
                  'max'       =>  99,
              ),
              'required'  =>  1,
              'class'     => array(
                  'my-field-class form-row-wide'
              ),
              'label'     => __('Sisestage enda vanus. Teie sünnipäeva küsime kinnituseks, et olete piisavalt vana ostukorvis olevate toodete ostmiseks.') ,
              'placeholder' => __('Teie vanus') ,
          ),
      
          $checkout->get_value('custom_field_name'));
          echo '</div>';
      }
      

      您还应该考虑到,woocommerce_form_field 函数的第一个参数是字段名称和 ID,除非您在第二个参数中单独传递 ID 参数。这意味着,由于'name' =&gt; 'vanusepiirang' key-value 生成的输入html 将包含两个不同的name 属性。我建议从源代码中删除 'name' =&gt; 'vanusepiirang' 部分。

      【讨论】:

      • 感谢您提供有关“名称”字段的代码和反馈。我尝试了更新的代码 - 它的工作方式与原始代码相同。我已经包含了这种情况的图像:imgur.com/ClFcPlq。我之前编写的“else if”函数可以解决问题,但我宁愿选择器从 18-99 开始。
      猜你喜欢
      • 2022-01-14
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多