2016-09-27 48 views
1

我有ZIP的输入字段,当用户填写字段时我想创建两个变量与第一个地面值。创建输入字段的数字范围

例如:

用户类型:01250, 我需要值01000两个变量和02000

var zip = $('.js-zip-input').val(); 
var inputZip = zip % 1000; 
var zipMax = zip - inputZip + 1000; 
var zipMin = zip - inputZip; 

这对值工作时,第一个字符不为0

+0

01250和1250不等于javascript中的数字。 –

回答

0

它的“不工作',因为这些是数字,并且它没有意义有一个数字01000.这实际上只有1000.如果你真的需要有零,你将不得不把你的值变成字符串,并添加0到开始其中。

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; 

上面的代码添加尾随零的字符串中的每个字符丢失。

+0

是的!工作正常。 – mestro67

+0

太棒了!很高兴知道。祝你好运,你在做什么。 – Brian

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; 
} 

}());