javascript - 在输入货币时如何格式化字段但支持退格和编辑?
问题描述
我喜欢下面的这个功能,它非常适合在您键入时格式化美元,但是,我无法弄清楚光标重新定位的问题,因为它与使用退格或突出显示并替换多个数字有关一次。例如,如果您运行被截断的代码,请尝试使用退格键将数字中的“32”替换为“89”或突出显示它并在上面输入。
有没有办法支持这一点?也许用光标重新定位?
$(document).ready(function() {
$(this).on('click keyup paste', 'input.dollar:not([readonly])', function(e) {
if (e.which != 8) {
var par = $(this).parents('.listingbox');
// skip for arrow keys
if (e.which >= 37 && e.which <= 40) return;
// format number
$(this).val(function(index, value) {
var $ret = value.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return '$' + $ret;
});
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input class="dollar" value="$342,323,123" />
解决方案
我建议写一个供你自己使用。需要记住的一些事项:
- 应该只取数字
- $ 符号应该只出现在开头
- 输入数字时应弹出逗号(从右开始每 3 位)
- 不确定是否允许小数
记住这一点,我们可以onchange
在输入元素上编写一个触发器。
让我知道其他人的想法。
推荐阅读
- typescript - 打字稿在可选链接上出现“无索引签名”错误
- php - WPAllImport - 多个供应商 - 相同的产品
- azure - 更新 Azure 应用服务 web.config 以加载 .ttf 字体文件
- sql - Oracle SQL - 读取分隔符
- c++ - 使用自动 lambda 参数设置外部变量的类型
- node.js - Octopus Deploy API - 无论保留期如何,都可以进行部署
- windows - 无法在 Windows 10 上启动 Kafka - 准备关闭 (kafka.server.KafkaServer) java.nio.file.AccessDeniedException
- opengl - OpenGL:在单个 VAO 中存储组合网格(每个对象多个网格)?
- c - 如何将 _Generic 与 C 中 typedef-ed 的结构一起使用?
- java - ECLIPSE PHOTON June 2018 (OEPE) + Weblogic server 12.2.1.4 + Spring Webapp Deployment issue