我有一个文本输入,我希望它的格式,而键入一个值,允许2个小数位和1000分隔符。它应该只允许数字。我已经做了以下操作,但它不允许添加小数点。简单地说,它是用于输入产品(货币)的价格。
INPUT = 1234560ABC.5665(应该只允许数字)
预期值= 1,234,560.56(应将小数位数限制为2)
我已经做了以下工作,但不知道如何添加小数值,后面跟着一个“.”,以确保“,”1000分隔符。
<input type="text" id="price" name="price" />
$('#price').keyup(function (event) {
$(this).val(function (index, value) {
return '$' + value.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
});
});
3条答案
按热度按时间jmp7cifd1#
我的解决方案使用连续的
.replace
.replace(/(?!\.)\D/g, "")
删除除.
以外的所有非数字字符.replace(/(?<=\..*)\./g, "")
删除除第一个.
之外的所有额外的.
.replace(/(?<=\.\d\d).*/g, "")
删除小数点后2位的所有内容.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
在适当位置插入逗号我已经修改了事件,以将对输入字段的所有更改解释为
.on('change click keyup input paste'
片段:
gzszwxb42#
您可以限制
keydown
事件中的键而不是keyup
,并允许特定键生效,然后格式化keyup
事件的输入:ddarikpa3#