Tec*_*Tee 1 html javascript jquery
我有一个文本输入,我希望它在输入一个允许 2 个小数位和 1000 个分隔符的值时对其进行格式化。它应该只允许数字。我做了以下但它不允许添加小数点。简单来说就是输入产品(货币)的价格。
INPUT = 1234560ABC.5665(应该只允许数字)
EXPECTED = 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, ",");
});
});
Run Code Online (Sandbox Code Playgroud)
Abd*_*eed 11
我的解决方案使用连续 .replace
.replace(/(?!\.)\D/g, "") 删除所有非数字字符,除了 ..replace(/(?<=\..*)\./g, "")删除.除第一个之外的所有额外内容..replace(/(?<=\.\d\d).*/g, "") 删除小数点后 2 位后的所有内容 .replace(/\B(?=(\d{3})+(?!\d))/g, ",") 在适当的地方插入逗号我已经修改了事件以说明对输入字段的所有更改 .on('change click keyup input paste'
片段:
$('#price').on('change click keyup input paste',(function (event) {
$(this).val(function (index, value) {
return '$' + value.replace(/(?!\.)\D/g, "").replace(/(?<=\..*)\./g, "").replace(/(?<=\.\d\d).*/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
});
}));Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" id="price" name="price" />Run Code Online (Sandbox Code Playgroud)