我试图在用户键入数字时添加逗号。在 Jquery 中选择 input form-control
具有属性 number
--- 的类的正确语法是什么?
编辑:我无法更改 HTML 代码,因为它是使用 Bootstrap 从 Django 输出的。
HTML
<span class="input-group-addon">$</span>
<input class="form-control" id="id_step2-number_2"
name="step2-number_2" type="number">
<span class="input-group-addon">.00</span>
查询
$(document).ready(function(){
$("input[type='number']").keyup(function(event){
// skip for arrow keys
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
var $this = $(this);
var num = $this.val().replace(/,/gi, "")
.split("").reverse().join("");
var num2 = RemoveRougeChar(
num.replace(/(.{3})/g,"$1,").split("")
.reverse().join("")
);
console.log(num2);
// the following line has been simplified.
// Revision history contains original.
$this.val(num2);
});
});
function RemoveRougeChar(convertString){
if(convertString.substring(0,1) == ","){
return convertString.substring(1, convertString.length)
}
return convertString;
}
JSFiddle 链接 https://jsfiddle.net/yWTLk/767/
原文由 jtd92 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,您不能使用
input type=number
,因为它不允许字符,
用于标记数字组。第二,有了好的正则表达式,这个其实超级容易,真的不需要反推反推,很无聊。
第一行从输入值中删除逗号。
第二行很神奇,它将值从后到前分成 3 组,然后用逗号连接。例如,
'1234567'
将变为['1', '234', '567']
。我用
split
这里只是为了展示RegExp的强大,实际中我们不需要拆分和连接,直接替换即可:小提琴
但是,真正的魔法是,我打赌你会大喊,
toLocaleString
!什么?!