В настоящее время я занимаюсь разработкой части веб-приложения, которое использует 4-контактный git пин-код ввода.
Я использую фрагмент логики c, чтобы проверить как ввод PIN-кода, так и ввод конформации PIN-кода по крайней мере 4 цифры, и они одинаковы.
Вот мой код:
<md-input-containe>
<label>New 4-digit PIN</label>
<input ng-model="selectedDriver.password" type="number"
ng-pattern="/^\d{4}$/" required>
</md-input-container>
<md-input-containe>
<label>Confirm the PIN</label>
<input ng-model="selectedDriver.passwordConfirm" type="number"
ng-pattern="/^\d{4}$/" required>
</md-input-container>
<md-button class="md-raised" ng-click="saveDriver()"
ng-disabled="selectedDriver.password != selectedDriver.passwordConfirm
|| selectedDriver.password.toString().length != 4">
Основная часть, на которую следует обратить внимание, это:
ng-disabled="selectedDriver.password != selectedDriver.passwordConfirm || selectedDriver.password.toString().length != 4"
Проблема, скажем, в том, что введен вывод типа 0123, .toString () превращает его в «123», потому что он удаляет ненужные начальные нули, поэтому он не проходит проверку длины.
Каковы некоторые возможные решения? Я посмотрел на padding, но он кажется недостаточно динамичным c для того, что мне нужно, мне нужна простая функция, которая будет принимать любой ввод, например, 0012, и превращать его в «0012».
Возможно Решение было бы использовать текстовые вводы и иметь некоторые логические элементы ng-change c, которые блокировали бы любые не набранные c символы, но я не верю, что это правильное решение.
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: По-видимому, мне нужно объяснить, почему это отличается от вопроса "заполнения". Это отличается, потому что пользовательский ввод может быть чем-то вроде «38», если бы это было «38», я бы не хотел бездумно дополнять его до «0038», это должно быть только «0038», если они его напечатали. Я не тот, кто публикует здесь сообщения, не просматривая в Интернете и не пробуя сначала все существующие решения.
Принятый ответ очень полезен для других пользователей SO, так как здесь нет никого, похожего на него.