2016-08-26 7 views
2

フィールドがinput、フィールドがng-changeで、番号が0から始まるときにトリガーされると失敗します。入力タイプ番号がゼロで失敗する

<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

これは、10進数*を0で始めることができないためです.0を入力していますが、実際の値は '11111111'に設定されています。 –

+0

数字を解析してから試してみてください – manish

+0

JSの数字の先頭に0がある場合、数字は8進数で、10進数ではないと思われます。この比較が必要な場合は、文字列を使用します。コンソールを開き、「011111111」と入力すると、結果として –

答えて

2

数学的に言えば、数字がゼロをリードすることはできませんです。 JSでは、実際にあなたが先行ゼロを維持するためにベース10で小数点以下の解析を、欲しいときに整数に先頭の0を置くことは進を解析と同等、またはベース8

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

で、あなたの」入力が文字列であることを確認するか、それを削除して、それが検出された場合にそれを追加するために独自の解析を行う必要があります。

+0

が取得されます。parseInt(num、10)または基数8を使用する必要がありますか? – Shane

+0

はどちらですか? ... –

+0

先頭に0を付けた数字を解析することはできません。 'parseInt(num、10)'は何も変わらない10進数を10進数に解析します。文字列の操作が必要です。 –

関連する問題