Поле ввода типа ввода с десятичными значениями отображает запятую вместо точки

Я использую Woocommerce для проекта и хочу, чтобы люди могли заказывать продукты с десятичным значением.

Теперь я довольно легко исправил эту проблему с помощью этого кода:

add_filter('woocommerce_quantity_input_min', 'min_decimal');
function min_decimal($val) {
  return 0.5;
}

add_filter('woocommerce_quantity_input_step', 'nsk_allow_decimal');
function nsk_allow_decimal($val) {
  return 0.5;
}

remove_filter('woocommerce_stock_amount', 'intval');
add_filter('woocommerce_stock_amount', 'floatval');

Однако по какой-то причине HTML-код на сайте выводит значения с запятыми вместо точек, например:

<input id="quantity_5a66016934e7b" class="input-text qty text" step="0,5" min="0,5" max="" name="quantity" value="1" title="Aantal" size="4" pattern="" inputmode="" type="number">

Который, очевидно, не работает, поскольку он использует запятые вместо точек. Однако я понятия не имею, что вызывает это. Я уже настроил свой глобальный разделитель в WooCommerce на период, когда думал, что это будет проблемой, но это не так.

Есть идеи, что может быть причиной этой проблемы?

1 ответ

Решение

Я проверил ваш код, и он работает нормально, даже если в поле вместо точки отображается кома. При взгляде на исходный код значение в поле устанавливается с точкой, но на дисплеях это отображается с комой.

Ниже вы можете нажать кнопку "Выполнить фрагмент кода" и увидите:

<div class="quantity">
    <label class="screen-reader-text" for="quantity_5a660e741bc2f">Quantity</label>
    <input type="number" id="quantity_5a660e741bc2f" class="input-text qty text" step="0.5" min="0.5" max="506" name="quantity" value="0.5" title="Qty" size="4" pattern="[0-9.]*" inputmode="numeric">
</div>

Итак, как вы можете видеть, значение поля 0.5, но дисплей 0,5...
Это просто нормальное поведение для этого HTML5 <input type="number"> поле, и поэтому это не имеет ничего общего с WooCommerce.

В этой связанной документации о <input type="number"> В разделе " Допустимые десятичные значения " происходит то же самое. Значение в источнике с точкой, но отображается с комой

В woocommerce вы также можете контролировать все woocommerce_quantity_input_args уникальный фильтр-крючок:

add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 20, 2 );
function custom_quantity_input_args( $args, $product ) {
    $args['input_value'] = 0.5; // Default starting value (Optional)
    $args['min_value'] = 0.5;
    $args['step'] = 0.5;
    $args['pattern'] = '[0-9.]*';
    $args['inputmode'] = 'numeric';

    return $args;
}

И вам также нужно (как в вашем коде) это:

remove_filter('woocommerce_stock_amount', 'intval');
add_filter('woocommerce_stock_amount', 'floatval');

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).

Проверено и работает.

Другие вопросы по тегам