2016-08-26 86 views
2

我有下面的input字段和一個ng-change函數,當數字以零開始時觸發失敗。輸入類型編號失敗爲零

<input type="number" ng-model="num" ng-change="confirm(num, 9)" /> 

function confirm = function(value, length) { 
    if (!value) return false; 
    $scope.val = ("" + value).length !== length; 
}; 

當我進入失敗"011111111"

+0

這是因爲十進制數*不能以0開始。您輸入的是0,但實際值被設置爲「11111111」。 –

+0

解析數字,然後嘗試 – manish

+0

當JS中的數字具有前導0時,我們認爲它們是八進制數,而不是十進制數。如果你想要這個比較,請使用一個字符串。打開你的控制檯,輸入'011111111',你將得到'2396745',結果 –

回答

2

從數學上講下面的數字,數字不能有前導零。在JS,上一個整數把領先的0是相當於解析八進制或基地8

var num = 011111111; 
//is the same as 
parseInt(011111111, 8); 
//equals 2396745 

當在現實中你想要一個小數解析,這是基地10爲了使您的前導零,你」必須確保輸入是一個字符串,或者將其刪除,然後執行自己的解析,以便在檢測到的情況下將其添加到該字符串中。

+0

我應該使用parseInt(num,10)還是base 8 – Shane

+0

,你需要哪一個? ... –

+0

您無法使用前導0解析數字。'parseInt(num,10)'仍然會將八進制數解析爲十進制數,但不會更改任何內容。你需要字符串操作。 –