Я использую директиву ng-currency (найдено here), чтобы выполнить некоторую проверку ввода в проекте и хотел бы внести некоторые изменения в исходный код.Использование ng-валюты для проверки ввода в пользовательском интерфейсе
В настоящее время, хотя директива принимает любой вид ввода от пользователя, он выполняет всю фильтрацию только в модели данных. Например. даже если поле ввода имеет в нем «ABC», значение модели остается неизменным, поскольку оно не является реальным вводом валюты, но в представлении используются все буквенно-цифровые символы и символы. Это почти идеально, но только половина работы для моего дела, так как Я хочу заблокировать любые незаконные символы от ввода фактического входного интерфейса (где недопустимые символы - это ничего, кроме 0-9 цифр, период ('.') , и тире ('-')).Demo of directive here
Я сделал регулярное выражение, которое, я считаю, обрабатывает случаи, в которых я нуждаюсь (необязательный знак «-» только в начале ввода, который может появляться только один раз, чтобы обозначить отрицательные значения валюты, и ограничение на 0- 2 знака после запятой после опциональный «», который также может появиться только один раз)
[-]?[\d]+[.]?[\d]{0,2}
Теперь мой вопрос заключается в том, что я достаточно новое для Угловое и JS, так что я не уверен, где поместить это регулярное выражение в директива, которую я использую, не говоря уже о том, как достичь этого желаемого результата. Я также хотел бы установить атрибут maxlength
для 11 символов в этой директиве, но опять же, это было потрясающе для новичка, который только недавно узнал о ng-repeat и других угловых шаблонах для навигации по этой директиве. У меня есть догадка о том, что я бы добавил функцию element.on('keypress')
, которая проверила бы шаблон регулярного выражения, но опять же это только догадка, и я хотел бы посоветоваться с опытным, прежде чем попытаться потратить больше времени на это.
Любая помощь очень ценится, спасибо за внимание.
Это потрясающе! Он работает почти так, как ожидалось, но у меня возникают проблемы с дополнительным знаком «-», который может появляться только в начале строк. Это позволит только цифры и «.». и две цифры после – bang
На самом деле я это понял! Это проблема с моим регулярным выражением. Для тех, кого это интересует, это новое выражение, которое я выбрал: '^ [-]? [0-9] * [.]? [0-9] {0,2} $'. Раньше '+' для цифр ожидали цифры до того, как '-' мог быть зарегистрирован – bang