从输入字段创建数字范围

时间:2016-09-27 13:56:11

标签: javascript

我有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

时的值

3 个答案:

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

}());