具有十进制值的输入类型数字字段显示逗号而不是句点
Input type number field with decimal values displays a comma instead of a period
我正在为一个项目使用 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 中的全球分隔符设置为一个时间段,认为这会是问题所在,但事实并非如此。
知道是什么导致了这个问题吗?
我已经测试了您的代码,即使该字段显示的是逗号而不是句点,它也能正常工作。
查看源代码时字段中的值设置了句点,但显示显示带有逗号。
你可以点击下面的"运行代码段"按钮,你会看到:
<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>
So as you can see, the field value is 0.5
, but the display is 0,5
…
Is just the normal behavior for this html5 <input type="number">
field and so this has nothing to do with WooCommerce.
在this related documentation about <input type="number">
“允许十进制值”部分,同样的事情发生了。 source中的值是带句点的,但是显示是逗号
在 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 文件。
我正在为一个项目使用 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 中的全球分隔符设置为一个时间段,认为这会是问题所在,但事实并非如此。
知道是什么导致了这个问题吗?
我已经测试了您的代码,即使该字段显示的是逗号而不是句点,它也能正常工作。 查看源代码时字段中的值设置了句点,但显示显示带有逗号。
你可以点击下面的"运行代码段"按钮,你会看到:
<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>
So as you can see, the field value is
0.5
, but the display is0,5
…
Is just the normal behavior for this html5<input type="number">
field and so this has nothing to do with WooCommerce.
在this related documentation about <input type="number">
“允许十进制值”部分,同样的事情发生了。 source中的值是带句点的,但是显示是逗号
在 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 文件。