jQuery可以在用户输入数字时添加逗号吗?
Posted
技术标签:
【中文标题】jQuery可以在用户输入数字时添加逗号吗?【英文标题】:Can jQuery add commas while user typing numbers? 【发布时间】:2011-02-07 14:37:19 【问题描述】:当用户输入数字时,我将如何动态添加逗号?有没有好的数字格式化程序可以提供帮助?我必须稍后添加这些数字,所以我最终必须删除逗号。但屏幕需要显示逗号以提高可读性。
【问题讨论】:
所以等一下,您想在每个数字后添加一个逗号吗?所以我输入 123456 会变成 1,2,3,4,5,6?或者你只是用逗号替换空格? 作为 macek 的回答,他很可能想要添加数千个分隔符。 【参考方案1】:运行代码 sn-p 看看它是否工作
$('input.number').keyup(function(event)
// skip for arrow keys
if(event.which >= 37 && event.which <= 40) return;
// format number
$(this).val(function(index, value)
return value
.replace(/\D/g, "")
.replace(/\B(?=(\d3)+(?!\d))/g, ",")
;
);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input class="number">
【讨论】:
你可以跳过在 keyup 函数中再次调用 jQuery,只需在整个过程中使用它。然后将 var num = $this.val().replace() 更改为 this.value.replace(),将 $this.val(num.replace()) 更改为 this.value = num.replace()。 @Bob,我感谢您的意见,但使用 jQuery 的方法以调用$()
为代价在 jQuery 社区中被广泛接受。这就是 为什么 jQuery 首先拥有可用的方法。
我只是在尝试这段代码,在 Chrome 和 FF 中,它会将逗号错位 1 位。例如,“1234”->“1234”和“12345”->“1,2345”
@Naveed(和所有人),早就应该这样做了,但我已经对这段代码进行了更新,使其更加可靠。正则表达式也得到了改进,以解决一些问题。这也允许用户按下退格键并且逗号仍然正确。
@maček 我该怎么做,包括小数位?【参考方案2】:
如果您不想使用 jQuery,这里是 @maček 在 vanilla JS 中的答案的实现:
var el = document.querySelector('input.number');
el.addEventListener('keyup', function (event)
if (event.which >= 37 && event.which <= 40) return;
this.value = this.value.replace(/\D/g, '')
.replace(/\B(?=(\d3)+(?!\d))/g, ',');
);
<input class="number">
【讨论】:
我这里只能输入4位数字,任何具体原因,因为我会超过4位数字,谢谢 只有在不需要插入小数的情况下才有效。【参考方案3】: <script>
function costt()
var costs = document.getElementById('cost').value;
if(costs != '')
// alert("ok");
cost.value = cost.value.replace(/\D/g, '').replace(/\B(?=(\d3)+(?!\d))/g, ',');
else
// alert("lol");
cost.value= 0;
</script>
【讨论】:
以上是关于jQuery可以在用户输入数字时添加逗号吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery 验证器插件仅为 2 个十进制数字 + 点 + 逗号设置正则表达式