这不正确: Can jQuery add commas while user typing numbers?
$('input.number').keypress(function(event){
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
var $this = $(this);
var num = $this.val().replace(/,/g, '');
$this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"));
});
我需要“1000000”为“1,000,000”或更好,空格为“1 000 000”。
请帮忙。感谢。
答案 0 :(得分:11)
如果你想拥有类似“1 000 000”的东西,你可以将代码更改为这样的代码。
var num = $this.val().replace(/(\s)/g, '');
$this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 "));
希望这有帮助
答案 1 :(得分:7)
$(document).ready(function(){
$('input.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(""));
// 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 - jsFiddle
答案 2 :(得分:6)
您可以使用Digital Bush的Masked Input Plugin for Jquery。它有许多自定义选项,包括空格,例如:
$("#myInputText").mask("9 999 999",{placeholder:" "})
它似乎已经在不同的浏览器平台上进行了测试,因此它可以帮助您避免一些兼容性测试。
如果您想要更全面的数字掩码支持,可以使用优秀的autoNumeric from decorplanit.com。他们的网页上有很多例子。
答案 3 :(得分:0)
我按照@ Zero-Distraction的回答建议尝试了autoNumeric,但是在剪切/粘贴时遇到了一些问题。 CleaveJS库的流行度更高,内置功能也更多,我没有遇到相同的问题。 (演示网站位于https://nosir.github.io/cleave.js/上)
答案 4 :(得分:-1)
我尝试使用模糊和焦点事件而不是键盘来改进j0k的代码: http://jsfiddle.net/AqDda/
^尝试输入A(标准类型=“数字”)与输入B(使用JavaScript的类型=“文本”和一些“无效”样式)。
$('input.number').on("focus",function(e){
var $this = $(this);
var num = $this.val().replace(/,/g,"");
$this.val(num);
}).on("blur", function(e){
var $this = $(this);
var num = $this.val().replace(/[^0-9]+/g, '').replace(/,/gi, "").split("").reverse().join("");
var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));
$this.val(num2);
});