我需要一个帮助。我有一个值('ie-001'),其数据类型为varchar,我将其转换为整数,然后在每次DB输入时添加1。我做了类似下面的事情。
var newcode=parseInt(response.data.code)+1;
此处response.data.code
包含代码001
,它来自DB.first用户从db获取最新代码(i.e-001
)并递增1然后存储在DB中。这种情况我得到的新代码值是2
,但我应该得到002
,'003',...等等。请帮助我。
答案 0 :(得分:3)
使用小功能:
<script>
function pad(n, width, z) {
z = z || '0';
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
var len = response.data.code.length;
var newcode=parseInt(response.data.code)+1;
alert(pad(newcode, len));
</script>
答案 1 :(得分:1)
递增后再次执行填充
var originalLength = response.data.code.length; //to ensure that new number is of same length
var newcode=parseInt(response.data.code)+1;
while( newcode.toString().length < originalLength ) //assuming that you want length 3
{
newcode= "0" + newcode;
}
alert( newcode );
答案 2 :(得分:0)
当你做parseInt时,Javascript会在数字前删除00,你会得到确切的数字。
因此,如果你加1则得到2。
如果你想获得002,你应该尝试
var newcode= '00'+parseInt(response.data.code)+1;
对于10位数字,只需循环:
for(var i=0; i<10-newcode.length; i++){
newcode = '0'+newcode;
}
但最好的解决方案是由YeldarKurgmangaliev提供的。
在jQuery中生成ID是一个可怕的错误,在数据库中执行。
答案 3 :(得分:0)
尝试使用String.prototype.replace()
与RegExp
/(\d+$)/
匹配数字字符
var str = "i.e-009";
str = str.replace(/(\d+$)/, function(match) {
var n = Number(match) + 1, len = String(n).length
// if `n` equals `9` , return `"i.e-009"`
// if `n` equals `10`, return `"i.e-010"`
// if `n` equals `100` rerurn `"i.e-100"`
, res = len === 1 ? "00" : len === 2 && "0" || len === 3 && "";
return res + n
});
console.log(str)
&#13;