如何允许 html5 数字输入类型的逗号和点分隔符

Posted

技术标签:

【中文标题】如何允许 html5 数字输入类型的逗号和点分隔符【英文标题】:How to allow comma and dot separator for html5 number input type 【发布时间】:2012-05-31 22:37:26 【问题描述】:

有没有办法使用 html5 数字输入类型同时允许逗号和点作为分隔符? 我找到了 decimal-separator 属性,但它似乎只需要一个分隔符...

【问题讨论】:

有没有办法通过保持数字输入类型来做到这一点?如何解决? 恐怕无法使用输入“数字”类型。您必须使用传统的输入“文本”类型并在文本离开或按键事件上应用格式或正则表达式。 【参考方案1】:

查看我的跨浏览器 InputKeyFilter 代码示例,根据用户的系统设置,用户可以在其中输入点或逗号作为小数分隔符。

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Input Key Filter Test</title>
	<meta name="author" content="Andrej Hristoliubov anhr@mail.ru">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	
	<!-- For compatibility of IE browser with audio element in the beep() function.
	https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible -->
	<meta http-equiv="X-UA-Compatible" content="IE=9"/>
	
	<link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css">		
	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script>
	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script>
	
</head>
<body>
Float field: 
<input type="number" step="any" id="Float"
	onchange="javascript: onChangeFloat(this)"
	onblur="inputKeyFilter.isNaN(parseFloat(this.value), this);"
/>
<script>
	CreateFloatFilter("Float");
	
	function onChangeFloat(input)
		inputKeyFilter.RemoveMyTooltip();
		var elementNewFloat = document.getElementById("NewFloat");
		var float = inputKeyFilter.parseFloat(input.value);
		if(inputKeyFilter.isNaN(float, input))
			elementNewFloat.innerHTML = "";
			return;
		
		elementNewFloat.innerHTML = float + " or localized value: " + float.toLocaleString();
	
</script>
 New float: <span id="NewFloat"></span>
</body>
</html>

感谢Dr.Oblak's 回复With a browser, how do I know which decimal separator does the client use?

另见我的页面example of the input key filter。

【讨论】:

【参考方案2】:

在 html5 数字输入类型中不能同时使用两者。实际上它可以支持十进制或浮点数以及实数。

【讨论】:

以上是关于如何允许 html5 数字输入类型的逗号和点分隔符的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel中格式化为包含逗号和点的十进制数?

NumericUpDown:接受逗号和点作为小数分隔符

Xamarin.Forms:如何只允许数字和点

不要在angularjs的textarea中输入超过20个逗号分隔或换行符分隔的序列号和字母数字

RegEx 用于匹配除逗号分隔的数字之外的所有字符

Angularjs小数分隔符逗号