如何在文本输入字段中添加逗号来分隔每组三位数字
How can I add a comma to separate each group of three digits in a text input field?
我有一个表单的文本输入字段,用户可以在其中输入数字。我想在每三个数字后面自动插入一个逗号。
例如,输入"20"将导致"20"。输入"100"将得到"100"。但如果他们输入"1000",则会在1和后面的0(例如1000(之间插入逗号。显然,如果数字达到7位数(例如1000000(,这种行为将继续。
有简单的方法吗?我对这一切都有点新手,所以请像和孩子说话一样回答:(
以下javascript:
function format(input)
{
var nStr = input.value + '';
nStr = nStr.replace( /',/g, "");
var x = nStr.split( '.' );
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /('d+)('d{3})/;
while ( rgx.test(x1) ) {
x1 = x1.replace( rgx, '$1' + ',' + '$2' );
}
input.value = x1 + x2;
}
以及以下HTML:
<input type="text" onkeyup="format(this)">
应该能解决你的问题。关键是要使用"onkeyup"。
在这里试试http://jsfiddle.net/YUSph/
为了好玩:
'9876543210'
.split('') // flip the entire string so that we can break every
.reverse() // 3rd digit, starting from the end
.join('')
.split(/(...)/) // split on every 3rd
.reverse() // flip the string again, though now each group of 3 is
.join(',') // backwards
.replace(/,(?=,)|,$|^,/g, '') // remove extra ,
.replace(/(,|^)('d)('d)?('d)?/g, '$1$4$3$2') // flip each group of digits
// 9,876,543,210
有人想尝试让它变得更好吗?
function addCommas(nStr){
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /('d+)('d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
将输入的值传递到函数中,并使用返回的结果设置输入。您可以将其绑定到onchange事件。
下面是一个依赖jquery绑定更改事件并设置值的工作示例:http://jsfiddle.net/TYyfn/
逗号脚本来自:http://www.mredkj.com/javascript/nfbasic.html
是的,这并不难。我相信这份推荐信可能会给你所需要的。
请注意,要使其成为动态的(正如他们键入的那样(,您需要将其连接到输入字段更改处理程序。否则,您可以将其连接到输入字段模糊处理程序(当逗号离开字段时,它将具有在字段中放置逗号的效果(。
尝试一下:它可能需要一点粗花呢。
-
取上面的函数:函数addCommas(nStr({…},并放入一个js文件中。
-
在页眉中添加一个脚本链接到jquery库,其中包含:src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js">
-
请确保您的文本框具有唯一的id。例如:id="comma_input"。
-
在同一个js文件中添加
$(document).ready(function(){ $('#comma_input').keyup(function(){ $(this).attr('value',addCommas($(this).attr('value'))); }); });
function addCommas(nStr){
var offset = nStr.length % 3;
if (offset == 0)
return nStr.substring(0, offset) + nStr.substring(offset).replace(/([0-9]{3})(?=[0-9]+)/g, "$1,");
else
return nStr.substring(0, offset) + nStr.substring(offset).replace(/([0-9]{3})/g, ",$1");
}
alert(addCommas("1234567"));
另一种方法,没有RegEx,只有数组操作:
function decimalMark(s) {
for (var a = s.split("").reverse(), b = [], i = 0; i < a.length; i++) {
if (i && i%3 === 0)
b.unshift(",");
b.unshift(a[i]);
}
return b.join("");
}
一定要将字符串传递给函数
decimalMark("1234")
纯JS中的简单字符串解决方案:
function addCommas(e) {
var tgt = e.target, val = tgt.value.replace(/,/g, ''),
amt = Math.ceil(val.length/3), newStr = '', x = 0;
while ( x <= amt ) {
newStr += val.slice(x*3,(x+1)*3);
newStr += ( x < amt-1 ) ? ',' : '';
x++
}
tgt.value = newStr;
}
document.getElementById('test').addEventListener('change', addCommas, false);
演示:http://jsfiddle.net/kevinvanlierde/TYyfn/141/
您可以使用标准的JavaScript函数。此处的示例;http://jsfiddle.net/azur/jD5pa/
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>pure js solution</title>
<script type='text/javascript'>
function digitGroup(dInput) {
var output = "";
try {
dInput = dInput.replace(/[^0-9]/g, ""); // remove all chars including spaces, except digits.
var totalSize = dInput.length;
for (var i = totalSize - 1; i > -1; i--) {
output = dInput.charAt(i) + output;
var cnt = totalSize - i;
if (cnt % 3 === 0 && i !== 0) {
output = " " + output; // seperator is " "
}
}
} catch (err)
{
output = dInput; // it won't happen, but it's sweet to catch exceptions.
}
return output;
}
</script>
</head>
<body>
<input type="text" value="53" onkeyup="this.value = digitGroup(this.value);">
</body>
</html>
var formatNumber = function(num, type) {
var numSplit, int, dec, type;
num = Math.abs(num);
num = num.toFixed(2);
numSplit = num.split('.')
int = numSplit[0];
if (int.length >= 3) {
int = int.substr(0, int.length - 3) + ',' + int.substr(int.length - 3, 3);
}
dec = numSplit[1];
return (type === 'exp'? sign = '-' : '+') + ' ' + int + '.' + dec;
};
- Javascript-Regex,用于逗号分隔的字母数字
- 输入只允许6位数字,逗号分隔后,允许角js中的另外6位数字
- 需要Selenium IDE中逗号分隔值中的数字
- 在另一个由非字母数字字符分隔的字符串中搜索(任何)字符串
- 向Javascript输出中添加逗号分隔的数字
- javascript正则表达式,用于逗号分隔的数字重复
- 将字符串分隔成数字值
- Regex,用于匹配用逗号分隔的特定数字
- 如何使用css将数字格式化为逗号分隔
- 如何仅替换第一个数字(用连字符分隔)
- 如何在 JavaScript 中用逗号分隔的
- 正则表达式在开始时将字符串与(逗号分隔的)数字匹配,并拆分为数字和其余
- 对具有点分隔数字的属性的对象数组进行排序
- 向数字添加百分之一位,该数字可以逗号或句点分隔
- Javascript - 正则表达式,用于字母,数字,下划线逗号分隔的标签
- 在 JavaScript 中,括号中的数字/函数以逗号分隔
- 正则表达式 javascript 用于检查逗号分隔的数字
- 使用正/负整数和浮点数验证逗号分隔的数字
- 用于JavaScript验证逗号分隔数字的RegEx
- 用逗号分隔数字来分隔 flot 中的轴