如何在输入中键入数字:文本,将它们分成三到三个,并在它们之间放置:“,”? 正常数字格式
示例:在输入中键入此数字:45656839
结果(直播 - 在线)在同一输入中:45,656,839
我不想使用插件。
尊重
答案 0 :(得分:3)
这应该为你做。
<input type="text" class="numeric" />
$("input:text.numeric").keyup(function(){
$val = $(this).val();
$(this).val($val.match(/[0-9]{1,3}/g).join(","))
});
对于正常的数字格式,代码有点不同。可能有一些很好的正则表达式,但我的第一个想法是扭转字符串并应用相同的技术。然后你再次反转字符串,你有它
$("input:text.numeric").keyup(function(){
$val = $(this).val().match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
$(this).val($val)
});
如果有人想要用小数位来实现这个,那将来参考(是的,我被带走了:P)......
$("input:text.numeric").keyup(function(e){
if(e.which > 40 || e.which == 8) {
var num = $(this).val().match(/[0-9,]*/g)[0];
var decimalNum = $(this).val().match(/[.][0-9]*/) || "";
if(num) {
var wholeNum = num.match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
var resultNum = wholeNum + decimalNum;
$(this).val(resultNum);
}
else
{
$(this).val(num);
}
}
});
答案 1 :(得分:2)
我认为蒙面输入插件可能是一个很好的解决方案。您可以在此处阅读更多内容:http://digitalbush.com/projects/masked-input-plugin/
答案 2 :(得分:1)
function thousandSeparator(n,sep) {
var sRegExp = new RegExp('(-?[0-9]+)([0-9]{3})'),
sValue=n+'';
if (sep === undefined) {sep=',';}
while(sRegExp.test(sValue)) {
sValue = sValue.replace(sRegExp, '$1'+sep+'$2');
}
return sValue;
}
来自:http://webdesign.onyou.ch/2010/08/04/javascript-inserting-thousand-separators/
答案 3 :(得分:0)
做这样的事情(未经测试,应该有效):
$(':text').blur(function(){
var $this = $(this), val = $this.val(), newVal = ''
for (var i = 0; i < val.length; i++) {
newVal += val.charAt(i)
if (!((i + 1) % 3))
newVal += ','
}
$this.val(newVal.slice(0,-1))
})
编辑:见上面约瑟夫的回答。他的时间更短。