带小数值的输入类型编号字段显示逗号而不是句点

时间:2018-01-22 15:36:59

标签: php html woocommerce product-quantity html5-input-number

我正在使用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 个答案:

答案 0 :(得分:0)

我已经测试了您的代码,即使字段显示的是昏迷而不是句号,它也能正常工作。 查看源代码时,字段中的值设置为句点,但显示屏会显示逗号。

您可以点击&#34;运行代码段&#34; 按钮,然后您会看到:

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

  

您可以看到,字段值 0.5 但显示 {{1 }} ...
  只是这个html5 0,5字段的正常行为,所以这与WooCommerce无关。

this related documentation about <input type="number">&#34; 允许小数值&#34;部分,同样的事情发生。源中的值带有句点,但显示为逗号

在woocommerce中,您还可以控制 <input type="number"> 唯一过滤器钩子中的所有内容:

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;
}

代码放在活动子主题(或活动主题)的function.php文件中。

经过测试和工作。