统一删除输入字段中的字符

时间:2018-07-06 13:42:58

标签: c# unity3d input-field

我在一个场景中有一个输入字段,我需要一个像MM / YY这样的格式,当用户输入前两个整数/时应立即添加到第二个字符。因此,我在下面的代码中添加了输入字段onvalueChanged事件

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

            ExpiryDateInputField.MoveTextEnd(false);
        }

问题是,当我尝试删除文本时,/之后的文本被删除,而/之前的文本未被删除,这是我做错的地方。

例如:如果我输入1234,则当我尝试删除输入的文本时,输入字段将显示为12/34。3和4在单击键盘上的退格键时正在删除,而12/却没有删除。有什么办法解决吗?

1 个答案:

答案 0 :(得分:1)

问题基本上是这个。

您输入“ 12”,调用OnValueChange并添加“ /”,现在您拥有“ 12 /”。

您按退格键删除“ /”,调用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;
}