Сохранить ведущие нули в int.toString () - PullRequest
2 голосов
/ 27 февраля 2020

В настоящее время я занимаюсь разработкой части веб-приложения, которое использует 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, так как здесь нет никого, похожего на него.

1 Ответ

3 голосов
/ 27 февраля 2020

Я использую:

<input type="text" pattern="[0-9]*" ...>

Поскольку Chrome удаляет начальные нули.

С этим шаблоном цифровая клавиатура c отображается на смартфонах.

You также может проверить:

<input type="tel" pattern="[0-9]*" ...>

Похоже, что этот также сохраняет ведущие нули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...