2016-08-26 5 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

Когда числа имеют ведущее 0 в JS, предполагается, что они восьмеричные, а не десятичные, я считаю. Если вы хотите это сравнение, используйте строку. Откройте консоль, введите '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)' все равно будет анализировать восьмеричное число до десятичного, что ничего не меняет. Вам нужны строковые манипуляции. –

Смежные вопросы