Я использовал input[type=number]. В chrome этот ввод игнорирует любые символы (исключение e - как в спецификации w3c). Но в Firefox вы можете написать любой символ, и все в порядке.
Я написал директиву:
link: function (scope, element, attr, ngModelCtrl) {
console.info('enter')
function fromUser(text) {
console.info(typeof text, typeof text === 'string')
if (typeof text === 'string' && text) {
var transformedInput = text.replace(/[^0-9]/g, '');
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
ngModelCtrl.$parsers.push(fromUser);
}
Но это не работает в Firefox 52.7.3 (64-бит). Я не получил никакого символа в console.info. В следующем я меняю порядок $ parsers на:
ngModelCtrl.$parsers.unshift(fromUser);
У меня есть символ в console.info, но на выходе это не помогает. Затем я могу добавить обработчик (в примере - только демонстрация для символа 'e'):
onkeydown = "javascript: return event.keyCode == 69 ? false : true"
Но полей много, и я считаю, что это плохое решение.
Сейчас все переписываю на input[type=text]. Но хочу использовать input[type=number]. Кто-нибудь может с этим помочь?
52.7.3 (64-битный) debian (мой друг получил его на Mac)
Firefox 52 поддерживает тип ввода = "число", а также его проверка. Можете ли вы опубликовать свой код, который предположительно позволяет вам вводить в него символы?
@AlekseySolovey ты пробовал? Я читал, что они начали поддерживать это в 2014 году, но я не понял, что они начинают поддерживать ...
@AlekseySolovey codepen.io/Muskos/pen/NYJJbP
Это немного неработающий код. В вашем примере был ng-model = "number", я думаю, вам нужен был ng-model = "result". Прекрасно работает без директивы (которая также не принимает . / десятичные знаки)
Ты серьезно? Вы пробовали? Это не зависит от определения переменной. В chrome вы не можете вводить char, в FF вы можете. Может я плохо объяснил ситуацию?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


какую версию Firefox вы использовали?