我有ZIP的输入字段,当用户填写字段时,我想创建两个带有第一个地面值的变量。
示例:
用户类型:01250, 我需要两个值为01000和02000
的变量var zip = $('.js-zip-input').val();
var inputZip = zip % 1000;
var zipMax = zip - inputZip + 1000;
var zipMin = zip - inputZip;
这适用于第一个字符不是< t 0 0
时的值答案 0 :(得分:0)
它“不工作”,因为这些是数字,并且数字01000没有意义。这实际上只是1000.如果你真的需要零,你必须把你的值变成字符串并在它们的开头添加0。
答案 1 :(得分:0)
这是你想要的吗?
var zip = 1250;
var range = 1000;
var zipMin = Math.floor(zip/range) * range;
var zipMax = zipMin + range;
上面的代码获取zip输入的最低值。 您可以将范围值设置为两个输出的差异:在您的情况下,1000到2000的范围为1000.尝试一下。
正如gavin指出的那样,除非你将它们转换为字符串,否则你不能在输出前有一个前导0。在这种情况下,您可以检查输出的长度(作为字符串)并添加前导零。
var outputLength = 5;
var zipMinOutput = "0".repeat(outputLength - zipMin.toString().length) + zipMin;
var zipMaxOutput = "0".repeat(outputLength - zipMax.toString().length) + zipMax;
上面的代码为字符串中的每个缺失字符添加了尾随零。
答案 2 :(得分:0)
(function(){
var zip = '00000140050';
var zeros = leading_zero(zip.toString().split('').map(Number)); //Number of zeros can be appended to min max values
alert(zeros);
var inputZip = zip % 1000;
var zipMax = zip - inputZip + 1000;
var zipMin = zip - inputZip;
alert(zipMax + ', ' + zipMin);
function leading_zero(x)
{
var n = 0;
for (var i = 0; i < x.length; i ++) {
if (x[i] == 0) n++;
else
break;
}
return n;
}
}());