Удалить символы в поле ввода в единстве - PullRequest
0 голосов
/ 06 июля 2018

У меня есть поле ввода в одной сцене, там мне нужен формат, такой как MM / YY, когда пользователь вводит первые два целых числа / должен быть добавлен сразу ко второму символу. Поэтому я добавил следующий код в поле ввода событие onvalueChanged

 if (ExpiryDateInputField.text.Length == 2)
        {
            ExpiryDateInputField.text = ExpiryDateInputField.text + "/";

            ExpiryDateInputField.MoveTextEnd(false);
        }

Здесь проблема в том, что, когда я пытаюсь удалить текст, текст после / удаляется, но текст до / не удаляется, Где я делаю неправильно.

Пример: Если я введу 1234, поле ввода будет отображаться как 12/34, когда я пытаюсь удалить введенный текст, 3 и 4 удаляются при нажатии на клавишу возврата на клавиатуре, но 12/ не удаляются. Есть ли способ решить это?

1 Ответ

0 голосов
/ 06 июля 2018

Проблема в основном в этом.

Вы вводите «12», вызывается OnValueChange и добавляется «/», теперь у вас есть «12 /».

Вы нажимаете клавишу Backspace, чтобы удалить «/», вызывается OnValueChange и добавляется «/», теперь у вас есть «12 /".

Вы можете попытаться запомнить последнее значение InputField, и если это значение содержит "/", не добавляйте другое "/".

string last = string.Empty;

public void OnValueChange()
{
    if (ExpiryDateInputField.text.Length == 2 && !last.Contains("/"))
    {
         ExpiryDateInputField.text = ExpiryDateInputField.text + "/";

        ExpiryDateInputField.MoveTextEnd(false);
    }
    last = ExpiryDateInputField.text;
}
...