2016-09-27 68 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; 
} 

}());