Skip to content

RUS_PHONE_NUMBER логика работы #32

Open
Hodov opened this issue Mar 31, 2018 · 1 comment
Open

RUS_PHONE_NUMBER логика работы #32

Hodov opened this issue Mar 31, 2018 · 1 comment

Comments

@Hodov
Copy link

Hodov commented Mar 31, 2018

Привет!

Клиент может вводить телефон в любом формате, и всегда на выходе этот телефон должен получаться корректным.

MaskImpl mask = MaskImpl.createTerminated(PredefinedSlots.RUS_PHONE_NUMBER);
mask.setHideHardcodedHead(true);
FormatWatcher formatWatcher = new MaskFormatWatcher(mask);
formatWatcher.installOn(editCustomerPhone);

Если я начинаю вводить телефон с 8, то получается +7 (8...
Такой комбинации быть не может. Восьмерка в этом случае должна игнорироваться. В этом слоте может быть только 9.

Если я начинаю вводить +, то получается +7(...
Но я уже разогнался и ввел еще 7, потому что хотел ввести +7916...
На выходе получается +7(7..., что тоже быть не может.
В идеале должна меняться маска на +#(###...
Либо также захардкодить в слоте первой цифры префикса 9.

@al-dr
Copy link
Contributor

al-dr commented Apr 24, 2018

  1. По поводу 8 в номере телефона.
    https://github.com/TinkoffCreditSystems/decoro/blob/master/demo/src/main/java/ru/tinkoff/decoro/demo/SlotBehaviourActivity.java
    здесь в третьем примере показана манипуляция с интерпретированием символа при вставке в слот

slots[1].setValueInterpreter(new ValueInterpreter() { @Override public Character interpret(Character character) { if (character == null) { return null; } return character == '8' ? '7' : character; } });

  1. Описанное поведение не тривиально, нет уверенности что можно его добиться текущими средствами

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants