javascript 基于keyup和onkeypress的正负数限制,逗号分隔
javascript limit on positive and negative number with delimiter comma based onkeyup and onkeypress
今天我在区分负数和正数时遇到了问题。例如,我有一个文本框来插入我的号码和输入号码后的结果。突然数字用逗号分隔符分隔,这样数字要么是正数要么是负数
eg : 1000 -> 1,000
-1000 -> -1,000
-1000.12 -> -1,000.12
-0.00001 -> -0.00001
如何使用 javascript 实现此目的,我所知道的是使用 onkeypress 和 onkeyup。非常感谢:)
这不是最好的解决方案,但您可以根据需要实施。
var msg = document.getElementById('myInputBox'),
numberPattern = /^[0-9]+$/;
msg.addEventListener('keyup', function(e) {
msg.value = getFormattedData(msg.value);
});
function checkNumeric(str) {
return str.replace(/\,/g, '');
}
Number.prototype.format = function() {
return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ",");
};
function getFormattedData(num) {
var i = checkNumeric(num),
isNegative = checkNumeric(num) < 0,
val;
if (num.indexOf('.') > -1) {
return num;
}
else if (num[num.length - 1] === ',') {
return num;
}
else if(i.length < 3) {
return i;
}else {
val = Number(i.replace(/[^\d]+/g, ''));
}
return (isNegative ? '-' : '') + val.format();
}
<input type="text" id='myInputBox' value="" />
今天我在区分负数和正数时遇到了问题。例如,我有一个文本框来插入我的号码和输入号码后的结果。突然数字用逗号分隔符分隔,这样数字要么是正数要么是负数
eg : 1000 -> 1,000
-1000 -> -1,000
-1000.12 -> -1,000.12
-0.00001 -> -0.00001
如何使用 javascript 实现此目的,我所知道的是使用 onkeypress 和 onkeyup。非常感谢:)
这不是最好的解决方案,但您可以根据需要实施。
var msg = document.getElementById('myInputBox'),
numberPattern = /^[0-9]+$/;
msg.addEventListener('keyup', function(e) {
msg.value = getFormattedData(msg.value);
});
function checkNumeric(str) {
return str.replace(/\,/g, '');
}
Number.prototype.format = function() {
return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ",");
};
function getFormattedData(num) {
var i = checkNumeric(num),
isNegative = checkNumeric(num) < 0,
val;
if (num.indexOf('.') > -1) {
return num;
}
else if (num[num.length - 1] === ',') {
return num;
}
else if(i.length < 3) {
return i;
}else {
val = Number(i.replace(/[^\d]+/g, ''));
}
return (isNegative ? '-' : '') + val.format();
}
<input type="text" id='myInputBox' value="" />